【发布时间】:2016-12-11 06:19:15
【问题描述】:
我对 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')]
【问题讨论】:
-
您的其他语言在我看来仍然很像英语(但我不确定)。
-
说真的:这真的取决于语言和任务。对于标记化,NLTK 支持多种开箱即用的语言——只需将语言作为第二个参数添加到
word_tokenize()。对于 POS 标记,您需要使用特定于语言的模型创建一个标记器对象(您甚至可能必须从第三方站点获取);没有唯一的答案,您需要指定相关语言。 -
@lenz 我已按要求更新了我的问题。