所以我有任意文本在一個txt文件中,我需要找到10個最常見的詞。我應該怎麼做?我想我應該從點到點讀句子並把它放到一個數組中,但不知道怎麼做。如何在一個文本中找到10個最常見的詞
回答
你可以使用LINQ實現它。嘗試是這樣的:
var words = "two one three one three one";
var orderedWords = words
.Split(' ')
.GroupBy(x => x)
.Select(x => new {
KeyField = x.Key,
Count = x.Count() })
.OrderByDescending(x => x.Count)
.Take(10);
'ToList()'是*冗餘*:'... words.Split(」「).GroupBy(X = > x)...' –
非常真實的德米特里,這是不需要的。我編輯了代碼示例。 – JanneP
如果您將得到一個「*隨機文本*在一個txt文件」您當前routine'll遇到困難:你必須刪除所有的*標點符號*(*逗號*,*句號*等);你必須處理* case *,例如''一個只是一個,但不是一個inc。「' - 單詞'one'出現兩次* –
所有的數據轉換成字符串,並將其分成數組
例如:
char[] delimiterChars = { ' ', ',', '.', ':', '\t' };
string text = "one\ttwo three:four,five six seven";
string[] words = text.Split(delimiterChars);
var dict = new Dictionary<String, int>();
foreach(var value in array)
{
if (dict.ContainsKey(value))
dict[value]++;
else
dict[value] = 1;
}
for(int i=0;i<dict.length();i++) //or i<10
{
Console.WriteLine(dict[i]);
}
你需要用更大的價值數組排序第一。
計數器例子:'text =「一,二,三,四,四,五」;'預期的結果是''四''位於頂部。實際結果是*空字符串*規定他們全部。 –
任務中最困難的部分是分裂初始文本的話。 自然語言(比如英語)字是一個相當複雜的事情:
Forget-me-not // 1 word (a nice blue flower)
Do not Forget me! // 4 words
Cannot // 1 word or shall we split "cannot" into "can" + "not"?
May not // 2 words
George W. Bush // Is "W" a word?
W.A.S.P. // ...If it is, is it equal to "W" in the "W.A.S.P"?
Donald Trump // Homonyms: name
Spades is a trump // ...and a special follow in a game of cards
It's an IT; it is // "It" and "IT" are different (IT is an acronym), "It" and "it" are same
另一個問題是這樣的:你可能要數It
和it
作爲一個和同一個詞,但IT
爲不同首字母縮寫詞。作爲第一次嘗試,我認爲是這樣的:
var top10words = File
.ReadLines(@"C:\MyFile.txt")
.SelectMany(line => Regex
.Matches(value, @"[A-Za-z-']+")
.OfType<Match>()
.Select(match => CultureInfo.InvariantCulture.TextInfo.ToTitleCase(match.Value)))
.GroupBy(word => word)
.Select(chunk => new {
word = chunk.Key,
count = chunk.Count()})
.OrderByDescending(item => item.count)
.ThenBy(item => item.word)
.Take(10);
在我的解決方案,我認爲:
- 詞可以包含
A..Z, a..z
,-
(破折號)和'
(APOSTROPH)字母只 TitleCase
已用於將所有大寫首字母縮寫詞與普通單詞分開(It
和it
將被視爲同一個單詞,而IT
爲不同的單詞)- 在情況下扳平(兩個或多個單詞具有相同的頻)這條領帶是由字母順序
- 1. 在文本中查找5個最常見的單詞
- 2. 查找一本大書中最常用的10個詞
- 3. 找到一個集合中最常見/最常見的元素?
- 4. 在文本文件python中的5個最常見的單詞
- 5. 找到文本中最常見的單詞
- 6. Java:如何在ArrayList中找到前10個最常見的String +頻率?
- 7. Cakephp找到10個最常見的產品
- 8. python,如何計算文本文件中最常見的詞
- 9. 在文本文件中找到最常見的名字
- 10. Objective-C中找到最常用的詞在一個NSString
- 11. 如何找到兩個單詞的常見字母?
- 12. 打印10個最常用的單詞
- 13. 在文件中查找k個最常見的單詞 - 內存使用情況
- 14. 從文本中找到前10個單詞:95%-working code
- 15. 打印文本文檔中使用python的10個最不經常的單詞
- 16. 用第三個詞替換兩個文本文件中常見的詞
- 17. 星火SQL找到一個組中最常見的項目
- 18. 如何找到最常見的模式
- 19. 查找形態最常出現的10個詞
- 20. 計算一段文字中最常見的名詞詞彙
- 21. 在NLTK中查找兩個文本語料庫之間的常見詞
- 22. 部分堆排序以查找5GB文件中k個最常見的單詞
- 23. 如何找到具有最多常用詞的兩個句子?
- 24. 在多個表中找到最常見的值
- 25. 如何在JavaScript中創建一個文本框和一個最長的單詞按鈕,以找到帶有文本框和最長單詞按鈕的HTML
- 26. 找到一套最常見的元素
- 27. 找到最常見的一組值
- 28. 如何找到文本文件中多個單詞的計數?
- 29. 10,字符串中最常見的單詞Python
- 30. 如何找到一個trie中最長的單詞?
打破什麼都試過ü迄今? –
拆分文本即,通過這些字,以便通過計數(以降序)基團,取前10 –