我正在开发一个python NLTK标记程序。 我的输入文件是包含多行的印地语文本。 在对文本进行标记化并使用pos_tag时,我得到的输出仅使用NN标记。 但是以英语句子作为输入,它会进行适当的标记。 请帮助。 版本 - Python 3.4.1,来自NLTK 3.0文档
请帮忙! 这是我试过的。
word_to_be_tagged = u“ताजोस्वासआनीचकचकीतदांततुमचेंव्यक्तीमत्वपरजळायतात。”
from nltk.corpus import indian
train_data = indian.tagged_sents('hindi.pos')[:300]
test_data = indian.tagged_sents('hindi.pos')[301:]
print(word_to_be_tagged)
print (train_data)
我获得的输出是不同的。
ताजो स्वास आनी चकचकीत दांत तुमचें व्यक्तीमत्व परजळायतात.
[[('पूर्ण', 'JJ'), ('प्रतिबंध', 'NN'), ('हटाओ', 'VFM'), (':', 'SYM'), ('इराक', 'NNP')], [('संयुक्त', 'NNC'), ('राष्ट्र', 'NN'), ('।', 'SYM')], ...]
答案 0 :(得分:2)
问题是你应该使用hindi POS Tagger:
from nltk.corpus import indian
from nltk.tag import tnt
train_data = indian.tagged_sents('hindi.pos')
tnt_pos_tagger = tnt.TnT()
tnt_pos_tagger.train(train_data) #Training the tnt Part of speech tagger with hindi data
print tnt_pos_tagger.tag(nltk.word_tokenize(word_to_be_tagged))
问题在于,词性标注器在特定域中是准确的(主要是语言和主题的组合)。在英语中,标记器还没有看到的大多数单词是名词(NN),它只用NN标记数据。
如果您使用您想要在(印地语)之后标记的相同域进行训练,则应该没问题。
有关详细说明,请参阅this。