Python中的同义词可以很容易地使用NLTK或Spacy来查找单个单词,如Cat、Dog、Happy或sad。但当涉及到诸如Artificial-Intelligence或Call Taxi之类的复合词时,语言处理器总是为每个标记提供输出,而不是为整个单词提供同义词;智力——智力、大脑、心智。但我需要找到人工智能的同义词,作为一个单一的复合词,它应该产生像机器人、系统智能之类的结果;,等等。如果有人给我一个小片段,我会很高兴。
> from nltk.corpus import wordnet as wn print
> wn.synset("eat.v.01").lemma_names # prints synonyms of eat print
> wn.synset("Artificial Intelligence").lemma_names # throws WordNetError
将Artificial_Intelligence与下划线一起使用也不起作用。
作为起点,
print(wn.synset("artificial_intelligence.n.01").lemma_names())
打印"AI"。
它不适用于";call_taxi";但对于基本用途来说,它仍然很有趣。
尝试使用sense2vec,可以与预先训练的模型之一一起使用,也可以在像维基百科这样的大型语料库上自己训练。你可以在这里查看它的演示。
这对";叫出租车";不过,对于多词表达,它只适用于名词短语。
如果你想要类似的短语";叫出租车";这些不会被称为同义词,它更像是一个语义相似性问题,或者可能是一个转述问题。如果没有更多的上下文,我甚至不确定你想要什么";叫出租车"-"点出租车"呼叫驾驶室";,像那样的东西?这是一个更困难的问题。