私はこのテキストを持っています:
$text = "Başka, küskün otomobil kaçtı buraya küskün otomobil neden kaçtı
kaçtı buraya, oraya KISMEN @here #there J.J.Johanson hep.
Danny:Where is mom? I don't know! Café est weiß for 2 €uros.
My 2nd nickname is mike18.";
最近はこれを使っていました。
$a1= array_count_values(str_word_count($text, 1, 'ÇçÖöŞşİIıĞğÜü@#é߀1234567890'));
arsort($a1);
このフィドルで確認できます:
http://ideone.com/oVUGYa
ただし、この解決策ですべての UTF8 の問題が解決されるわけではありません。パラメータとして str_word_count にUTF8 セット全体を書き込むことができません。
だから私はこれを作成しました:
$wordsArray = explode(" ",$text);
foreach ($wordsArray as $k => $w) {
$wordsArray[$k] = str_replace(array(",","."),"",$w);
}
$wordsArray2 = array_count_values($wordsArray);
arsort($wordsArray2);
出力は次のようになります。
Array (
[kaçtı] => 3
[küskün] => 2
[buraya] => 2
[@here] => 1
[#there] => 1
[Danny] => 1
[mom] => 1
[don't] => 1
[know] => 1
...
...
)
これはうまく機能しますが、すべての文語問題をカバーしているわけではありません。たとえば、str_replace でコンマとドットを削除しました。
たとえば、このソリューションでは次のような単語はカバーHello Mike,how are you ?
されません。Mike と how は別の単語として扱われません。
これは str_word_count solution: ではカバーされていませんKISMEN @here #there
。アットマークとダッシュ記号は考慮されません。
これはカバーされませんJ.J.Johanson
。言葉ではありますが、JJJohanson
質問、感嘆符は単語から削除する必要があります。
サポートstr_word_count
で動作を取得するより良い方法はありますか? UTF8
この$text
質問の上部にある は、私にとって参考になります。
(答えにフィドルを提供できるとよいでしょう)