自动检测文本中的标记
本文关键字:文本 自动检测 | 更新日期: 2023-09-27 18:27:56
是否有任何库或算法可以自动检测文本中的标记(忽略所选语言的常用单词)?
类似这样的东西:
string[] keywords = GetKeyword("Your order is num #0123456789")
关键字[]将包含"订单"answers"#0123456789"。。。?它存在吗?或者用户会一直自己选择每个文档的所有标签?:?
foreach(string keyword in keywords) { // where keywords is a List<string>
if ("Your order is num #0123456789".Contains(keyword)) {
keywordsPresent.Add(keyword); // where keywordsPresent is a List<string>
}
}
return keywordsPresent;
上面所做的并不能满足您的#0123456789,因为它添加了更多的逻辑来查找#的索引。。。
对不起,我误解了这个问题。如果你想查找特定的单词,算法将取决于你的字符串。例如,您可以使用字符串。Split()从一个字符串中生成一个单词数组,然后使用它,如下所示:
string[] words = string.Split("Your order is num #0123456789");
string orderNumber = "";
if(words.Contains("order") && w.StartsWith("#").Count > 0)
{
orderNumber = words.Where(w=>w.StartsWith("#").FirstOrDefault();
}
这将首先从"Your order is num#0123456789"生成一个单词数组,然后如果它包含单词"order",它将缠绕一个以"#"开头的单词并选择它;
我认为可以使用许多不同的算法。其中一些是简单的,另一些是超级复杂的。我可以建议你下一个基本方法:
- 将所有文本拆分为单词数组
- 从数组中删除停止字。(在谷歌上搜索"停止词列表"以获取停止词的完整列表。)
- 遍历数组并计算每个单词的计数
- 根据单词在数组中的"权重"对单词进行排序
- 选择必要数量的标签