德语词性标注

2024-04-26 04:25:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用NLTK从以以下命令开头的文本字符串中提取名词:

tagged_text = nltk.pos_tag(nltk.Text(nltk.word_tokenize(some_string)))

它在英语中很好用。有没有一种简单的方法可以让它也适用于德国人?

(我没有自然语言编程的经验,但是我成功地使用了python nltk库,这是目前为止最好的库。)


Tags: 字符串textpos文本命令stringtagsome
4条回答

词性(POS)标记对于特定的[自然]语言非常特殊。NLTK包含许多不同的标记,它们使用不同的技术来推断给定标记中给定标记的标记。大多数(但不是全部)这些标签使用一个统计模型的排序作为主要或唯一的设备来“做把戏”。这种标记需要一些“训练数据”来建立这种语言的统计表示,训练数据以语料库的形式出现。

NTLK“发行版”本身包括许多这些语料库,以及一组“语料库阅读器”,它们提供一个API来读取不同类型的语料库。我不知道NTLK的情况,如果这包括任何德语语料库。但是,您可以找到一些免费的语料库,然后您需要将其转换为满足适当NTLK语料库阅读器的格式,然后您可以使用它来训练德语的POS标记器。

你甚至可以创建自己的语料库,但这是一项非常艰苦的工作;如果你在一所大学工作,你必须找到贿赂和强迫学生为你这样做的方法;-)

词性(POS)标记对于特定的[自然]语言非常特殊。NLTK包含许多不同的标记,它们使用不同的技术来推断给定标记中给定标记的标记。大多数(但不是全部)这些标签使用一个统计模型的排序作为主要或唯一的设备来“做把戏”。这种标记需要一些“训练数据”来建立这种语言的统计表示,训练数据以语料库的形式出现。

NTLK“发行版”本身包括许多这些语料库,以及一组“语料库阅读器”,它们提供了一个API来读取不同类型的语料库。我不知道NTLK的情况,如果这包括任何德语语料库。但是,您可以找到一些免费的语料库,然后您需要将其转换为满足适当NTLK语料库阅读器的格式,然后您可以使用它来训练德语的POS标记器。

你甚至可以创建自己的语料库,但这是一项非常艰苦的工作;如果你在一所大学工作,你必须找到贿赂和强迫学生为你这样做的方法;-)

自然语言软件通过利用语料库和它们提供的统计数据来发挥它的魔力。你需要告诉nltk一些德语语料库,以帮助它正确地标记德语。我相信EUROPARL语料库可能有助于你继续。

有关配置示例,请参见nltk.corpus.europarl_rawthis answer

另外,考虑用“nlp”标记这个问题。

Pattern library包含一个分析德语句子的函数,结果包括部分语音标记。以下内容是从他们的文档中复制的:

from pattern.de import parse, split
s = parse('Die Katze liegt auf der Matte.')
s = split(s)
print s.sentences[0]

>>>   Sentence('Die/DT/B-NP/O Katze/NN/I-NP/O liegt/VB/B-VP/O'
     'auf/IN/B-PP/B-PNP der/DT/B-NP/I-PNP Matte/NN/I-NP/I-PNP ././O/O')

如果您喜欢SSTS标记集,可以设置可选参数tagset="STTS"

更新:另一个选项是spacy,这里有一个简单的例子blog article:

import spacy

nlp = spacy.load('de')
doc = nlp(u'Ich bin ein Berliner.')

# show universal pos tags
print(' '.join('{word}/{tag}'.format(word=t.orth_, tag=t.pos_) for t in doc))
# output: Ich/PRON bin/AUX ein/DET Berliner/NOUN ./PUNCT

相关问题 更多 >