我有丹麦WordNet的.txt文件。有没有办法将这个用于Python的NLP库,如NLTK?如果没有,您将如何使用给定库不支持的语言进行自然语言处理。还要说你想在像spaCy这样的库中用英语或荷兰语以外的语言进行命名实体识别。有没有办法做到这一点?
答案 0 :(得分:5)
有没有办法将这个用于Python的NLP库,如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']
您如何使用特定库不支持的语言进行自然语言处理?
我经常和日本人一起做这件事。
有些技巧会查看您的令牌 - 也就是说,他们检查一个单词是否正确 字面上“说”或“是”或某事。这对于词干和常见问题很常见 引理器有明显的原因。一些系统使用基于假设的规则 关于部分语言如何以给定语言(通常是英语)进行交互。您 也许能够将这些期望转化为您的语言 你就是不能用这些。
然而,许多有用的技术根本不会看到你的标记内部 - 它们 只关心两个令牌是否相等。这些通常主要依赖于 标签或搭配数据等功能。您可能需要预先标记您的 数据,你可能想在维基百科上训练一般语言模型 语言,但就是这样。单词向量,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。
对于这种数据,算法并不真正关心第一列中的内容,因此语言支持不是问题。
希望有所帮助!