我正在研究将具有相同含义的单词/短语组合在一起的 NLP 方法。例如,在句子 'the table is broken' 中,break 可以替换为以下单词/短语,并且句子仍然具有相同的含义。
Broken:损坏,毁坏,破坏,不适合用途,缺少一条腿
我想对包含特定领域和口语行话的文本执行此操作,因此现有的 NLP 解决方案可能不适合?
我的意图是将此作为命名实体提取和命名实体链接之间的桥接步骤。
我正在研究将具有相同含义的单词/短语组合在一起的 NLP 方法。例如,在句子 'the table is broken' 中,break 可以替换为以下单词/短语,并且句子仍然具有相同的含义。
Broken:损坏,毁坏,破坏,不适合用途,缺少一条腿
我想对包含特定领域和口语行话的文本执行此操作,因此现有的 NLP 解决方案可能不适合?
我的意图是将此作为命名实体提取和命名实体链接之间的桥接步骤。
我建议你使用word2vec来完成这项任务。Word2vec 是一种无监督算法,用于计算语料库中用于学习的单词的 N 维嵌入。基本上,它以 n 维数组的形式为您在输入中使用的每个单词提供数字表示。
一旦建立模型并且可以使用 emeddings,找到相似的单词就像计算数组之间的相似度一样容易。这是在 word2vec 中通过寻找最相似的来完成的:
>>>result = word_vectors.most_similar(positive=['woman', 'king'], negative=['man'])
>>>print("{}: {:.4f}".format(*result[0]))
queen: 0.7699
或直接比较术语:
>>> result = word_vectors.similar_by_word("cat")
>>> print("{}: {:.4f}".format(*result[0]))
dog: 0.8798
在这里查看更多示例。
要回答这个问题:
我想对包含特定领域和口语行话的文本执行此操作,因此现有的 NLP 解决方案可能不适合?
如果您使用自己的领域特定语料库训练模型,则应该没有任何问题;当然,前提是它足够长且足够丰富。