掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
テキストに現れる単語の頻度を高速でカウントするには? (ID:9900)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
数百キロバイトのテキストから、出現する英単語の頻度をカウントしたいと思い次のようなコードを書きました。 これでは、処理に非常に時間がかかってしまい、実用的ではありません。もっと早くカウントする方法を教えていただけないでしょうか。 var sr, word, hash:TStringList; i, hindo:integer; reg:TRegExpr; begin reg:=TRegExpr.Create; sr:=TStringList.Create; hash:=TStringList.Create; word:=TStringList.Create; sr.LoadFromFile(filename); reg.Expression:='[\s\b]+'; reg.Split(sr.Text, word); for i := 0 to word.Count-1 do begin if hash.IndexOfName(word.Strings[i]) = -1 then begin hash.Add(word.Strings[i]+'=1'); end else begin hindo:=StrToInt(hash.Values[word.Strings[i]])+1; hash.Values[word.Strings[i]]:=IntToStr(hindo); end; end; RichEdit1.Text:=hash.Text;
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.