2015-05-31 4 views
0

Я работаю над программой тегов Python NLTK. Мой входной файл - это текст хинди, содержащий несколько строк. В вопросе выделения текста и использования pos_tag вывод, который я получаю, имеет только тег NN. , но с английским предложением в качестве ввода он делает правильную маркировку. Просьба помочь. версия - Python 3.4.1, с NLTK 3,0 документацияUnicode Tagging in Python NLTK


Пожалуйста, помогите! вот что я пробовал.

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

Мой код - для ввода в виде одного предложения 'импорт NLTK s = NLTK .pos_tag (nltk.word_tokenize ("ताजो स्वास आनी चकचकीत दांत तुमचें व्यक्तीमत्व परजळायतात.")) print (s) ' Выход - >>> [('ताजो', 'NN'), ('स्वास', 'NN'), ('आनी', 'NN'), ('चकचकीत', 'NN'), ('दांत', 'NN'), ('तुमचें', 'NN'), ('व्यक्तीमत्व', 'NN'), ('परजळायतात', 'NN'), ('.', '.')]] – ASHAY

ответ

2

Проблема заключается в том, что вы должны использовать 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)) 

Проблема заключается в том, что часть речи Tagger является точным в конкретной области (в основном сочетание языка и темы). На английском языке большинство слов, которые еще не видели теггеров, - это существительные (NN), они привязывают вас к данным только с NN.

Если вы тренируете его в том же домене, который хотите его пометить после (хинди), все должно быть в порядке.

См. this для получения дополнительных пояснений.

+0

При попытке же получить следующую ошибку: Файл «C: \ Python34 \ lib \ encodings \ cp1252.py», строка 23, в декоде return codecs.charmap_decode (вход, self.errors, decoding_table) [0] UnicodeDecodeError: кодек 'charmap' не может декодировать байт 0x8d в позиции 21: символьные карты до ASHAY

+0

@ASHAY вы пытались запустить после редактирования? – omerbp

+0

Ну его еще не решено ... Я сталкиваюсь с трудностями в обучении набору данных. Мне нужна помощь в этом отношении.coz в зависимости от обучения данных, я смогу подделать текст, то есть post_tag. Просьба помочь.! – ASHAY

-1

На выполнение указанных выше предложенных строк кода,

import nltk 
import re 
import time 

word_to_be_tagged = "ताजो स्वास आनी चकचकीत दांत तुमचें व्यक्तीमत्व परजळायतात." 

word_to_be_tagged_next = "दांत आशिल्ल्यान तुमचो आत्मविश्वासय वाडटा." 

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) 


s=nltk.pos_tag(nltk.word_tokenize(word_to_be_tagged)) 
print(s) 

Выход генерируемый -

ताजो स्वास आनी चकचकीत दांत तुमचें व्यक्तीमत्व परजळायतात. 
[[('पूर्ण', 'JJ'), ('प्रतिबंध', 'NN'), ('हटाओ', 'VFM'), (':', 'SYM'), ('इराक', 'NNP')], [('संयुक्त', 'NNC'), ('राष्ट्र', 'NN'), ('।', 'SYM')], ...] 
[('ताजो', 'NN'), ('स्वास', 'NN'), ('आनी', 'NN'), ('चकचकीत', 'NN'), ('दांत', 'NN'), ('तुमचें', 'NN'), ('व्यक्तीमत्व', 'NN'), ('परजळायतात', 'NN'), ('.', '.')] 
>>>