查找大文本中每个相似词的频率 c#/sql
Find frequency of each similar word in a large text c#/sql
我需要将相似的词分组,然后找到频率。
所以 "moron and morons sat on moronic bench with mormons"
这样的文本会产生结果
Moron 3
Sat 1
Mormon 1
我需要能够在一个查询中推送文本或确切单词列表,并能频繁接收通用单词。
从 C# 开始,可以使用 SQL 服务器。
你可以使用 sys.dm_fts_index_keywords_by_document:
SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('db_name'),OBJECT_ID('tab_name'))
在 C# 版本中,您可以将 Regex
与 Linq 一起使用;像这样:
var txt = "moron and morons sat on moronic bench with mormons";
var words = Regex.Matches(txt, @"\w+").OfType<Match>().Select(c => c.Value).ToList();
var result = words.Select(c => new {Word = c, Count = words.Count(w => w.Contains(c))})
.OrderByDescending(o=> o.Count).ToList();
[ C# Fiddle Demo ]
我需要将相似的词分组,然后找到频率。
所以 "moron and morons sat on moronic bench with mormons"
这样的文本会产生结果
Moron 3
Sat 1
Mormon 1
我需要能够在一个查询中推送文本或确切单词列表,并能频繁接收通用单词。
从 C# 开始,可以使用 SQL 服务器。
你可以使用 sys.dm_fts_index_keywords_by_document:
SELECT *
FROM sys.dm_fts_index_keywords_by_document(DB_ID('db_name'),OBJECT_ID('tab_name'))
在 C# 版本中,您可以将 Regex
与 Linq 一起使用;像这样:
var txt = "moron and morons sat on moronic bench with mormons";
var words = Regex.Matches(txt, @"\w+").OfType<Match>().Select(c => c.Value).ToList();
var result = words.Select(c => new {Word = c, Count = words.Count(w => w.Contains(c))})
.OrderByDescending(o=> o.Count).ToList();