Discussion:
[問題] 有關檔案讀取
(时间太久无法回复)
乖小孩
2007-06-23 08:33:43 UTC
Permalink
各位大大

請問在做計算文章的詞頻,如何將文章中個別的"word"
由檔案讀入到個別String 或 list 或 HashMap中?

(意思就是拆解文字) 第一步就做不出來了= ="

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.243.48.132
shooting star
2007-06-23 11:06:17 UTC
Permalink
※ 引述《johnkenkae (乖小孩)》之銘言:
: 各位大大
: 請問在做計算文章的詞頻,如何將文章中個別的"word"
: 由檔案讀入到個別String 或 list 或 HashMap中?
: (意思就是拆解文字) 第一步就做不出來了= ="

如果是英文文章的話,可以試試看StringTokenizer

是 java.util package底下的一個class

而你所說的是從檔案讀進輸入,那就必須先讀取一個檔案的內容再使用

StringTokenizer

檔案的輸出輸入串流相關class,請參閱 java.io package

hint: File、FileReader、BufferedReader and so on.

example:

try
{
File file = new File("D:/abc.txt");
BufferedReader br = new BufferedReader(new FileReader(file));
String s;
StringTokenizer token;
ArrayList<String> strList = new ArrayList();

while( ( s = br.readLine()) != null )
{
token = new StringTokenizer(s);

while( token.hasNextToken() )
{
strList.add(token.nextToken());
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}


--
我真是一整個佛心來的

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.171.248.232
!H45
2007-06-23 12:57:12 UTC
Permalink
※ 引述《NightPrince (shooting star)》之銘言:
: ※ 引述《johnkenkae (乖小孩)》之銘言:
: : 各位大大
: : 請問在做計算文章的詞頻,如何將文章中個別的"word"
: : 由檔案讀入到個別String 或 list 或 HashMap中?
: : (意思就是拆解文字) 第一步就做不出來了= ="
: 如果是英文文章的話,可以試試看StringTokenizer
: 是 java.util package底下的一個class
: 而你所說的是從檔案讀進輸入,那就必須先讀取一個檔案的內容再使用
: StringTokenizer
: 檔案的輸出輸入串流相關class,請參閱 java.io package
: hint: File、FileReader、BufferedReader and so on.
: example:
: try
: {
: File file = new File("D:/abc.txt");
: BufferedReader br = new BufferedReader(new FileReader(file));
: String s;
: StringTokenizer token;
: ArrayList<String> strList = new ArrayList();
: while( ( s = br.readLine()) != null )
: {
: token = new StringTokenizer(s);
: while( token.hasNextToken() )
: {
: strList.add(token.nextToken());
: }
: }
: }
: catch(Exception ex)
: {
: ex.printStackTrace();
: }

可否請教中文的文章該怎麼統計各個文字出現的字數?

Ex:
輸入:
"背書包,上學去,我的書包裡,有書也有筆,我有四本書,還有三枝筆,還有一個
小皮球,也在我的書包裡"

輸出:
背:1
書:5
包:3
上:1
學:1
去:1
我:3
的:2
裡:2
有:5
也:2
筆:2
四:1
本:1
還:2
三:1
枝:1
一:1
個:1
小:1
皮:1
球:1
在:1

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.115.205.85
愚人
2007-06-23 13:18:51 UTC
Permalink
※ 引述《H45 (!H45)》之銘言:
: ※ 引述《NightPrince (shooting star)》之銘言:
: : 如果是英文文章的話,可以試試看StringTokenizer
: : 是 java.util package底下的一個class
: : 而你所說的是從檔案讀進輸入,那就必須先讀取一個檔案的內容再使用
: : StringTokenizer
: : 檔案的輸出輸入串流相關class,請參閱 java.io package
: : hint: File、FileReader、BufferedReader and so on.
: : example:
: : try
: : {
: : File file = new File("D:/abc.txt");
: : BufferedReader br = new BufferedReader(new FileReader(file));
: : String s;
: : StringTokenizer token;
: : ArrayList<String> strList = new ArrayList();
: : while( ( s = br.readLine()) != null )
: : {
: : token = new StringTokenizer(s);
: : while( token.hasNextToken() )
: : {
: : strList.add(token.nextToken());
: : }
: : }
: : }
: : catch(Exception ex)
: : {
: : ex.printStackTrace();
: : }
: 可否請教中文的文章該怎麼統計各個文字出現的字數?
: Ex:
: 輸入:
: "背書包,上學去,我的書包裡,有書也有筆,我有四本書,還有三枝筆,還有一個
: 小皮球,也在我的書包裡"
: 輸出:
: 背:1
: 書:5
: 包:3
: 上:1
: 學:1
: 去:1
: 我:3
: 的:2
: 裡:2
: 有:5
: 也:2
: 筆:2
: 四:1
: 本:1
: 還:2
: 三:1
: 枝:1
: 一:1
: 個:1
: 小:1
: 皮:1
: 球:1
: 在:1


呵 java 是用 unicode 所以字串轉成了 char array 還是會原來的編碼
除非你有改掉他

class TestChinese {

static void main(args) {
def String input = "背書包,上學去,我的書包裡,有書也有筆," +
"我有四本書,還有三枝筆,還有一個小皮球,也在我的書包裡"

// 轉成 char array
char[] ca = input.toCharArray()

// 統計用的 HashMap
def stat = [:]

// 計算次數
ca.each{
if (it in stat.keySet())
stat[it] += 1
else
stat[it] = 1
}

// 印出結果
print stat

}

}


=====================================================
結果

[去:1, 也:2, 筆:2, 還:2, 的:2, 背:1, 球:1, 枝:1, ,:7, 皮:1, 個:1, 在:1, 三
:1, 有:5, 小:1, 上:1, 我:3, 本:1, 包:3, 裡:2, 一:1, 學:1, 書:5, 四:1]

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.232.232.203

继续阅读narkive:
Loading...