自动检测文本中的标记

本文关键字:文本 自动检测 | 更新日期: 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",它将缠绕一个以"#"开头的单词并选择它;

我认为可以使用许多不同的算法。其中一些是简单的,另一些是超级复杂的。我可以建议你下一个基本方法:

  1. 将所有文本拆分为单词数组
  2. 从数组中删除停止字。(在谷歌上搜索"停止词列表"以获取停止词的完整列表。)
  3. 遍历数组并计算每个单词的计数
  4. 根据单词在数组中的"权重"对单词进行排序
  5. 选择必要数量的标签