Python 非英语语言的POS

Python 非英语语言的POS,python,nltk,Python,Nltk,我对nltk很陌生 这让我可以根据句子的词性来标记它。但是,在对其他语言执行此操作时,需要采取哪些步骤 import nltk sentence = "I'm not sure!" tokens = nltk.word_tokenize(sentence) tagged = nltk.pos_tag(tokens) 更新 我对西班牙语感兴趣 更新2 import nltk from nltk.tokenize import word_tokenize training_set = [[(w.

我对nltk很陌生

这让我可以根据句子的词性来标记它。但是,在对其他语言执行此操作时,需要采取哪些步骤

import nltk
sentence = "I'm not sure!"
tokens = nltk.word_tokenize(sentence)
tagged = nltk.pos_tag(tokens)
更新

我对西班牙语感兴趣

更新2

import nltk
from nltk.tokenize import word_tokenize

training_set = [[(w.lower(),t) for w,t in s] for s in nltk.corpus.conll2002.tagged_sents('esp.train')]

unigram_tagger = nltk.UnigramTagger(training_set)
bigram_tagger = nltk.BigramTagger(train_set, backoff=unigram_tagger)

tokens = [token.lower() for token in word_tokenize("El Congreso no podrá hacer ninguna ley con respecto al establecimiento de la religión, ni prohibiendo la libre práctica de la misma; ni limitando la libertad de expresión, ni de prensa; ni el derecho a la asamblea pacífica de las personas, ni de solicitar al gobierno una compensación de agravios.")]
制作:

[('el', 'DA'), ('congreso', 'NC'), ('no', 'RN'), ('podrá', 'VMI'), ('hacer', 'VMN'), ('ninguna', 'DI'), ('ley', 'NC'), ('con', 'SP'), ('respecto', 'NC'), ('al', 'SP'), ('establecimiento', 'NC'), ('de', 'SP'), ('la', 'DA'), ('religión', 'NC'), (',', 'Fc'), ('ni', 'CC'), ('prohibiendo', None), ('la', 'DA'), ('libre', 'AQ'), ('práctica', 'NC'), ('de', 'SP'), ('la', 'DA'), ('misma', 'DI'), (';', 'Fx'), ('ni', 'CC'), ('limitando', None), ('la', 'DA'), ('libertad', 'NC'), ('de', 'SP'), ('expresión', 'NC'), (',', 'Fc'), ('ni', 'CC'), ('de', 'SP'), ('prensa', 'NC'), (';', 'Fx'), ('ni', 'CC'), ('el', 'DA'), ('derecho', 'NC'), ('a', 'SP'), ('la', 'DA'), ('asamblea', 'NC'), ('pacífica', 'AQ'), ('de', 'SP'), ('las', 'DA'), ('personas', 'NC'), (',', 'Fc'), ('ni', 'CC'), ('de', 'SP'), ('solicitar', 'VMN'), ('al', 'SP'), ('gobierno', 'NC'), ('una', 'DI'), ('compensación', 'NC'), ('de', 'SP'), ('agravios', None), ('.', 'Fp')]

Afaik nltk除了英语之外,没有任何语言的现成标记器或解析器。nltk之外还有这样的工具,您可以下载并使用


nltk确实提供了一些工具,可以使用其中一个西班牙语标记语料库作为培训材料,培训您自己的西班牙语标记者。例如,您可以按照nltk的说明,但使用
conll2002.tagged_sents(“esp.train”)
作为培训数据。它只有大约25万字,所以你不会得到很好的表现,但它应该让你开始。(当然,你可以找到一个更大的标记语料库来进行训练。)

Afaik nltk没有为英语以外的任何语言提供现成的标记器或解析器。nltk之外还有这样的工具,您可以下载并使用


nltk确实提供了一些工具,可以使用其中一个西班牙语标记语料库作为培训材料,培训您自己的西班牙语标记者。例如,您可以按照nltk的说明,但使用
conll2002.tagged_sents(“esp.train”)
作为培训数据。它只有大约25万字,所以你不会得到很好的表现,但它应该让你开始。(当然,你可以找到一个更大的标记语料库来训练。)

你的另一种语言在我看来仍然很像英语(但我不确定)。说真的:这取决于语言和任务。对于标记化,NLTK支持许多现成的语言–只需将语言作为第二个参数添加到
word\u tokenize()
。对于词性标记,您需要创建一个具有特定语言模型的标记器对象(您甚至可能需要从第三方网站获得);这个问题没有单一的答案,你需要指定问题的语言。@lenz我已按要求更新了我的问题。你的另一种语言在我看来仍然很像英语(但我不确定)。说真的:这取决于语言和任务。对于标记化,NLTK支持许多现成的语言–只需将语言作为第二个参数添加到
word\u tokenize()
。对于词性标记,您需要创建一个具有特定语言模型的标记器对象(您甚至可能需要从第三方网站获得);这个问题没有单一的答案,您需要指定所涉及的语言。@lenz我已按要求更新了我的问题。如果我希望标记句子或如果我希望自己标记单词,是否应该对标记者进行不同的培训。例如,当我训练了标记器后,它是否能够确定“hacia”是一个没有句子上下文的介词?我是否根据我在原始问题中的第二次更新正确地做了事情?还不错,但你的解决方案不能标记未知单词(默认标记器的作用是什么)。在
conll2002.tagged\u sents(“esp.testa”)
上调用标记器的
evaluate()
方法来测试标记器。nltk的工具包中也有比ngram标记器更复杂的标记器(例如,
HiddenMarkovModelTagger
Perceptrontager
),但它们需要更长的训练时间。如果我想标记句子或想自己标记单词,那么标记器的训练是否应该有所不同。例如,当我训练了标记器后,它是否能够确定“hacia”是一个没有句子上下文的介词?我是否根据我在原始问题中的第二次更新正确地做了事情?还不错,但你的解决方案不能标记未知单词(默认标记器的作用是什么)。在
conll2002.tagged\u sents(“esp.testa”)
上调用标记器的
evaluate()
方法来测试标记器。此外,nltk的工具包中有比ngram标记器更复杂的标记器(例如,
HiddenMarkovModelTagger
Perceptrontager
),但它们的训练时间要长得多。另请参阅