反义词搜索扩展搜索词

数据挖掘 Python nlp gensim
2021-10-13 22:59:32

我有一些代码在一小段文本中识别出感兴趣的 ngram,然后在更大的文本中搜索 ngram,以提供上下文中使用的术语的片段。一个 ngram 可能是unordered numerical set. 现在,如果我找不到unordered numerical set,我开始从左侧修剪字符串以查看是否numerical set在较大的文本中可用。

在我从左边修剪之前,我想做的是看看任何单词是否有反义词,比如orderedfor unordered这是因为我的 ngram 可能以一种方式定义,但使用相反。

是否有一个已知的列表或其他方式来找出我是否可以尝试一组单词的高度相关的反义词?

例如,我想我可以编写一些查找前缀的正则表达式,例如“un”或“dis”,并查看删除这些前缀产生的单词是否是有效的英文单词。这似乎已经解决了,所以在我尝试创建任何东西之前,我想找出可能已经存在的东西。

我目前在余下的处理中使用 Gensim、NLTK 和 Word2Vec 的 Python,如果它重要的话。

3个回答

这是一个有趣的问题。

在我看来,这是最全面的方式(如果速度不是问题。或者您可以提取所有这些单词并创建自己的字典/数据库)。

您可以这样做, https://wordsapiv1.p.mashape.com/words/love/antonyms(有关此 API 的更多信息,请访问此链接

但是,您可以使用此 api 将结果限制为反义词。

您可以使用请求进行 API 调用。

import requests
import simplejson
response = requests.get(url)
result = simplejson.loads(response)

然后从结果中搜索反义词。如果您要获得大量反义词,请仅使用前 n 个结果进行搜索。

虽然,W2V 给出了关键字上下文中最常用的词,但很难猜出哪个是关键字的反义词。

Word2Vec可用于以与示例对相同的方式查找与另一个单词相关的单词。(fi:x快乐)。您可以使用它来动态生成反义词的候选者。

它可能不如预编译列表准确,但它几乎涵盖了所有候选人。事实上,Word2Vec 还可以帮助您在给定上下文的情况下找到其他(反义词除外)可能的候选词。

您可以从这样一个反义词的小列表开始。也许您可以获得一份完整的列表来处理您感兴趣的大多数情况。现在,假设您没有这样的列表并讨论算法方法来做到这一点。

正如您所写的有关“un”和“dis”之类的前缀,您也可以使用基于形态的规则。这样的规则可能具有高精确度(遵守形态规则的对将是反义词)但召回率低(您会错过很多对)。我们应该使用这些规则来增加我们的反义词数据集。

现在,我们应该使用 Wikipeida 或华尔街日报甚至 Google ngrams 数据集的文本数据集。反义词往往会出现在相同的上下文中,但不会一起出现。例如,人们会写“有序列表”、“无序列表”,但不会写“有序无序列表”。

为此目的,适当的关联是出现在距离小于 X 超过 Y 次且联合概率高于 Z 预期的单词。您可以使用我们拥有的反义词数据集来找到参数的适当值多于。

一旦计算了单词之间的关联级别,反义词将与相同的单词关联,但彼此之间不关联。请注意,由于同义词也往往具有这种关系,因此在这里您应该具有高召回率但精度较低。

虽然列表选项的工作量最小且收益最低,并且关联方法需要相当大的工作量,但还有另一种中间方式。许多词典,如维基词典,都有一段反义词。您可以刮掉它们并建立这样的列表。

这样的列表很有用,我很惊讶没有这样的通用资源。如果您将构建一个并愿意分享它,那么您将非常有帮助。