是否可以将自己的WordNet添加到库中?

sn3*_*d3r 11 python nlp machine-learning nltk spacy

我有丹麦WordNet的.txt文件.有没有办法将这个用于Python的NLP库,如NLTK?如果没有,您将如何使用给定库不支持的语言进行自然语言处理.还要说你想在像spaCy这样的库中用英语或荷兰语以外的语言进行命名实体识别.有没有办法做到这一点?

pol*_*m23 5

有什么方法可以将它与NLTK等Python NLP库一起使用吗?

您可以使用NLTK做到这一点,尽管有点尴尬。

您需要将WordNet语料库转换为Open Multilingual Wordnet格式,这是一个简单的制表符分隔格式。请注意,他们已经拥有丹麦语WordNet。

然后,如果尚未安装WordNet和Open Multilingual Wordnet语料库,则应在NLTK中安装它。这将创建一个目录,例如~/nltk_data/corpora/omw/,每个语言文件都有一个子目录。您需要通过为其创建目录并命名文件来添加语料库,如下所示:

~/nltk_data/corpora/omw/xxx/wn-data-xxx.tab
Run Code Online (Sandbox Code Playgroud)

xxx可以是任何东西,但在两个地方都必须相同。此文件名模式在此处 NLTK中进行硬编码。

之后,您可以通过指定xxx作为lang参数来使用WordNet 。这是文档中的示例:

>>> wn.synset('dog.n.01').lemma_names('ita') # change 'ita' to 'xxx'
['cane', 'Canis_familiaris']
Run Code Online (Sandbox Code Playgroud)

如何使用给定库不支持的语言进行自然语言处理?

我经常用日语做到这一点。

有些技术会在您的令牌中查找-即,它们检查单词是否确实是“ say”或“ be”之类的。出于明显的原因,这在词干提取器和成词机中很常见。一些系统使用规则的假设是基于语音部分如何以给定语言(通常是英语)交互的假设。您也许可以将这些期望转换为您的语言,但通常情况下您根本无法使用这些期望。

但是,许多有用的技术根本不看待令牌内部-它们只是在乎两个令牌是否相等。这些通常主要依靠标签或并置数据等功能。您可能需要预先标记数据,并且可能想要在Wikipedia上使用该语言训练通用语言模型,仅此而已。单词向量,NER,文档相似性是示例问题,在这些示例问题中,通常缺少语言支持。

还要说您想在诸如spaCy之类的库中使用英语或荷兰语以外的语言进行命名实体识别。有什么办法吗?

SpaCy提供了一种用于NER 的自定义标签的方法。没有记录将它与其他不受支持的语言一起使用,这会有些棘手。但是,由于您不需要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
..
Run Code Online (Sandbox Code Playgroud)

几种CRF或其他NER工具都支持这种格式。CRFSuite是带有Python包装器的一个

对于此类数据,该算法实际上并不关心第一列中的内容,因此语言支持不是问题。

希望有帮助!