避免在通过 AutoTag(文本标记算法)生成的数组中使用同义词

Avoid synonyms in an array generated via AutoTag (Text Tagging Algorithm)

我一直在做一个文本分析任务。我应该在哪里识别段落中使用最多的词。

为此,我正在使用 algorithmia - npm 包。这为我提供了文本中重复次数最多的单词。

这个包工作得很好,但我仍然有 2 个问题:

(1) 我得到如下所示的标签数组:

['integrate', 'integration', 'policy', 'conversation', 'demo', 'test']

这里,'integrate' & 'integration' 都是一样的意思。我想避开这里 'integrate'。

(2) 该过程使用重复次数最多的词来识别标签。我的输入段落中有 'pricing'、'cost'、'payment' 等词,但由于它不是完全匹配,所以我没有得到标签 'cost' 或其他内容相似。

改进其中一个逻辑将帮助我完成任务。


我已经尝试了很多关于同义词、名词、动词等的库。但似乎都没有用。提一下我已经尝试过的套餐:

thesaurus-com

句子相似度

字符串相似度

妥协

wordnet

节点滚雪球

datamuse


我也试过设置一个阈值并匹配单词'integrate' & 'integration',它确实删除了'integrate'标签,但也影响了我需要的一些其他标签在那里。


提前致谢

你的问题深入到自然语言理解。您不仅要处理 "finding" 个相似的词,还要处理这些词下的概念。

在你的情况下,"Integrate" 和 "Integration" 根本不相似。它们甚至不是同义词。一个是动词,一个是名词,一个是动作,另一个是情境。

他们所做的是共享一个共同的语义根 -> 将事物合二为一的想法,整体

(截至目前)没有可用的工具来执行此操作。您可以混合使用多种工具。

您提到 Wordnet 并说它不起作用。但是,这可能是解决您的问题的最佳选择。 Wordnet 自己的解释显示了它在您的情况下是如何有用的:

[在 WordNet 中,]名词、动词、形容词和副词被分组为一组认知同义词(同义词集),每个同义词集表达一个不同的概念。同义词集通过概念-语义和词法关系。 还有 "WordNet superficially resembles a thesaurus, in that it groups words together based on their meanings. However, there are some important distinctions. First, WordNet interlinks not just word forms—strings of letters—but specific senses of words. As a result, words that are found in close proximity to one another in the network are semantically disambiguated." - WordNet Official Website

使用 wordnet,您可以找到真正的同义词并将它们组合在一起('pricing' 和 'cost',例如 - 'payment' 是另一个完整的故事...)。

现在,关于你原来的 'integrate' 和 'integration' 如果你真的想把它们组合在一起,添加另一个启发式方法,使用词干分析器根据词干将词打包在一起(不保证有效100% 的时间,因为它取决于词干分析器规则)。