我有一个丹麦WordNet的.txt文件。有什么方法可以将这个与NLP库一起用于Python,比如NLTK?如果不是的话,你会如何用一种不被特定图书馆支持的语言进行自然语言处理。另外还说你想用英语或荷兰语以外的语言在像spaCy这样的图书馆中进行命名实体识别。有没有办法做到这一点?是否可以将自己的WordNet添加到库中?
回答
有没有什么方法可以将它与NLP库一起用于Python,比如NLTK?
你可以用NLTK做到这一点,尽管它有点尴尬。
您需要将WordNet语料库转换为Open Multilingual Wordnet格式,这是一种简单的制表符分隔格式。请注意,他们已经有丹麦的WordNet。
然后你应该在NLTK中安装WordNet和Open Multilingual Wordnet语料库,如果你还没有这样做的话。这将创建一个像~/nltk_data/corpora/omw/
这样的目录,并为每个语言文件提供一个子目录。你需要通过创建一个目录并命名您的文件中像这样来添加您的文集:
~/nltk_data/corpora/omw/xxx/wn-data-xxx.tab
xxx
可以是任何东西,但它必须是相同的在两地。该文件名模式在NLTK here中被硬编码。
之后,您可以通过将xxx
指定为lang
参数来使用WordNet。下面是一个例子from the documentation:
>>> wn.synset('dog.n.01').lemma_names('ita') # change 'ita' to 'xxx'
['cane', 'Canis_familiaris']
你会怎样去了解自然语言处理在未通过给定的库支持的语言?
我经常用日语做这个。
有些技术会查看您的令牌 - 也就是说,他们会检查一个字是否为 ,字面意思是“说”或“是”等。这对于stemmers和 lemmatizers来说很常见,原因很明显。有些系统使用基于假设 的规则,了解语言部分如何以给定语言(通常是英语)进行交互。您可能会将这些期望转化为您的语言,但通常您不能使用这些期望。
但是,许多有用的技巧根本无法查看令牌 - 它们只是在于两个令牌是否相等。这些通常主要依赖于标签或搭配数据等功能 。您可能需要预先标记您的 数据,并且您可能需要在维基百科上以 语言培训通用语言模型,但就是这样。 Word矢量,NER,文档相似性是例子 缺乏语言支持通常不成问题的问题。
此外,还说你想用英语或荷兰语以外的语言在像spaCy这样的图书馆中进行命名实体识别。有没有办法做到这一点?
SpaCy为NER提供了custom labelling的一种手段。使用它与 否则不支持的语言不记录,并会有点棘手。 但是,由于您不需要NER的完整语言模型,因此可以使用具有标记示例的NER 特定工具。
这里的基础上,CoNLL格式 CRF++一些示例训练数据:
He PRP B-NP
reckons VBZ B-VP
the DT B-NP
current JJ I-NP
account NN I-NP
deficit NN I-NP
will MD B-VP
narrow VB I-VP
to TO B-PP
only RB B-NP
# # I-NP
1.8 CD I-NP
billion CD I-NP
in IN B-PP
September NNP B-NP
. . O
He PRP B-NP
reckons VBZ B-VP
..
这样的格式是由几个CRF或其它NER工具支持。 CRFSuite是一个Python wrapper。
对于这类数据,该算法并不关心第一列中的内容,因此语言支持不是问题。
希望有帮助!
- 1. 将GMP添加到自己的库中
- 2. 是否可以将您自己的字符串添加到Django SearchVectorField中?
- 3. 可以UIViewController自己添加到UINavigationController
- 4. 是否可以将非Maven库添加到artifactory存储库?
- 5. 是否可以将我的自定义控件添加到xcode
- 6. 将自己的属性添加到HTML元素可以吗?
- 7. 是否可以将像素添加到“自动”值?
- 8. 是否可以将自定义验证添加到JSF bean?
- 9. 是否可以将自定义数据添加到HealthKit?
- 10. 我可以将自己的声音添加到TTS,并可以用我自己的声音生成段落吗?
- 11. 是否可以实现自己的IASKSettingsReader?
- 12. 是否可以将CCLabel添加到CCSpriteBatchNode中的CCSprite中?
- 13. 是否可以将方法添加到集合中的类中?
- 14. 是否可以将图例添加到JFreeChart的图中?
- 15. 是否可以将效果添加到TextView中的文本?
- 16. 是否可以将JavaScript添加到PDF中的图像?
- 17. 是否可以将VB添加到POI的Excel工作表中?
- 18. QT - 将自己的列添加到QFileSystemModel
- 19. 将语言添加到NLTK WordNet
- 20. 是否可以将图像添加到我的SQL Server 2008数据库表中?
- 21. 我可以将自定义存储库添加到gradle.properties中吗?
- 22. 数组是否可以引用自己
- 23. 是否可以设计我自己的数据库GUI?
- 24. 是否可以将自定义方法添加到Web2Py的内置“模型”中?
- 25. 是否可以将自定义RTOS的线程支持添加到GDB中?
- 26. Liferay是否可以将自定义资源操作添加到我的portlet中?
- 27. 是否可以添加ScrollView到AppBarLayout
- 28. 是否可以将CMFCToolBar添加到对话框中?
- 29. 是否可以同时将列添加到多个表中?
- 30. 是否可以将单行添加到Django表单中?
简答:你不行。一个API只支持它支持的东西(这是spaCy最大的缺点之一)。漫长的回答是,如果你真的知道你在做什么,我想你可能可以自己编辑源代码。 – spicypumpkin
@Posh_Pumpkin,这是不正确的。可以扩展API,因为它是一个开源项目,请参阅https://github.com/nltk/nltk/pull/1621。即使对'spacy',我相信@honnibal和@ines鼓励贡献:https://github.com/explosion/spaCy/blob/master/CONTRIBUTING.md – alvas
@alvas嗯,是的。这不算是编辑源代码吗?我很确定这不是OP想要的。 – spicypumpkin