0

我使用“nltk”来识别名词,然后“变形”来找到名词的复数形式。我添加了一个意外情况,其中复数形式与字典/语料库进行交叉检查,如果该复数词不存在,则附加“(s)”而不是使用复数形式。以下是一小部分代码(交叉检查部分)。

import inflect    
word = input()
p = inflect.engine()
pluralized = p.plural(word
with open("words.rtf") as f:
  text = f.read().strip().split()
  if pluralized in text:
     newword = pluralized
  else:
     newword = word+"(s)"
print(word," : ",newword)

问题是我使用的字典/语料库“words.rtf”没有大多数可能单词的复数形式。是否有包含更多复数示例的文本文件或更好的交叉检查方法。我想拒绝缩写和首字母缩略词的复数形式,只接受正确英语单词的复数形式。例如,

knife: knives
ID: ID(s) #not IDS
4

1 回答 1

0

如果您正在寻找可以帮助处理变形的东西,您可以查看 pyInflectLemmInflect。这些将比 NLTK 为您做得更好。

如果您真的只是在寻找单词列表,请查看 Debian 软件包wamerican。如果您在 Linux 上,它可能已经安装在/usr/share/dict. 对于 Windows,我相信您可以使用 7-zip 或其他几个程序来提取 .deb 文件,然后只需使用存档中的单词列表即可。

还有更大的列表,如 wamerican-large、-huge 和 -insane 和 wbritish 版本(请参阅 wamerican 页面右侧的类似包)。

于 2019-06-04T19:41:30.380 回答