python - 无法正确标记印地语句子

标签 python nltk tokenize hindi pos-tagger

我最近启动了一个关于印地语数据处理的项目。我尝试执行下面的某些代码,但没有得到预期的输出。

    e = u"पूर्ण प्रतिबंध हटाओ : इराक"
    tokens=nltk.word_tokenize(e)
    from nltk import pos_tag
    print tokens
    tag = nltk.pos_tag(tokens)
    print tag

我获得的输出如下所示:

[u'\u092a\u0942\u0930\u094d\u0923', u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', u'\u0939\u091f\u093e\u0913', u':', u'\u0907\u0930\u093e\u0915']
[(u'\u092a\u0942\u0930\u094d\u0923', 'NN'), (u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', '``'), (u'\u0939\u091f\u093e\u0913', ':'), (u':', ':'), (u'\u0907\u0930\u093e\u0915', ':')]

我的查询将输入的第一个单词标记为名词,其余单词标记不正确。相同的查询给出了英语数据的正确输出。

我做错了什么?我是否必须使用任何特定函数来标记印地语数据。

感谢您的帮助。

最佳答案

您可以使用tnt标记器进行训练,然后使用您自己的数据进行测试。

word_to_be_tagged = u"पूर्ण प्रतिबंध हटाओ : इराक"

word_to_be_tagged_next = u"मैं बहुत हैरान हूँ"

from nltk.corpus import indian

train_data = indian.tagged_sents('hindi.pos')[:300] //used for training 
test_data = indian.tagged_sents('hindi.pos')[301:] //used for testing 

print train_data
[[(u'\u092a\u0942\u0930\u094d\u0923', u'JJ'), (u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', u'NN'), (u'\u0939\u091f\u093e\u0913', u'VFM'), (u':', u'SYM'), (u'\u0907\u0930\u093e\u0915', u'NNP')], [(u'\u0938\u0902\u092f\u0941\u0915\u094d\u0924', u'NNC'), (u'\u0930\u093e\u0937\u094d\u091f\u094d\u0930', u'NN'), (u'\u0964', u'SYM')], ...]

print hindi_sents[0][0][0]
पूर्ण

print hindi_sents[0][0][1]
JJ

from nltk.tag import tnt
tnt_pos_tagger = tnt.TnT()
tnt_pos_tagger.train(train_data)
tnt_pos_tagger.evaluate(test_data)
0.6599664991624791

tnt_pos_tagger.tag(nltk.word_tokenize(word_to_be_tagged))
[(u'\u092a\u0942\u0930\u094d\u0923', u'JJ'),
 (u'\u092a\u094d\u0930\u0924\u093f\u092c\u0902\u0927', u'NN'),
 (u'\u0939\u091f\u093e\u0913', u'VFM'),
 (u':', u'SYM'),
 (u'\u0907\u0930\u093e\u0915', u'NNP')]

tnt_pos_tagger.tag(nltk.word_tokenize(word_to_be_tagged_next))
[(u'\u092e\u0948\u0902', u'PRP'),
 (u'\u092c\u0939\u0941\u0924', u'INTF'),
 (u'\u0939\u0948\u0930\u093e\u0928', 'Unk'),
 (u'\u0939\u0942\u0901', 'Unk')]

关于python - 无法正确标记印地语句子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859234/

相关文章:

Python,如何有单独的参数处理和主函数?

python - Pylint - Pylint 无法导入 flask.ext.wtf?

python - 执行计算以显示 Python 具有 53 位精度

python - NLTK BigramCollocationFinder 返回的总二元组计数是多少?

python - NLTK 中的 Ngram 模型和困惑

java - 如何仅标记 Lucene 中的某些单词

java - 字符串分词器,分隔符

python - 在 Django 管理界面中设置与所选模型类的关系

python - 为什么我的 NLTK 函数在处理 DataFrame 时很慢?

php - 在Plesk服务器中启用Tokenizer扩展