2012-10-23 38 views
15

Tôi đang sử dụng NLTKword_tokenizer để chia một câu thành các từ.Mã hóa các từ tiếng Ả Rập bằng NLTK

Tôi muốn tokenize câu này:

في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء 

Mã Tôi đang viết là:

import re 
import nltk 

lex = u" في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء" 

wordsArray = nltk.word_tokenize(lex) 
print " ".join(wordsArray) 

Vấn đề là các chức năng word_tokenize không chia bằng lời nói. Thay vào đó, nó chia tách bằng chữ cái để đầu ra là:

"ف ي _ ب ي ت ن ا ك ل ش ي ل م ا ت ح ت ا ج ه ي ض ي ع ... ا د و ر ع ل ى ش ا ح ن ف ج أ ة ي خ ت ف ي .. ل د ر ج ة ا ن ي ا س و ي ن ف س ي ا د و ر ش ي ء" 

Bất kỳ ý tưởng nào?

Những gì tôi đã đạt đến cho đến nay:

Bằng cách cố gắng văn bản trong here, nó dường như được tokenized bằng chữ cái. Ngoài ra, tuy nhiên, tokenizers khác tokenised nó một cách chính xác. Điều đó có nghĩa là word_tokenize chỉ dành cho tiếng Anh? Điều đó có phù hợp với hầu hết các chức năng NLTK không?

+1

Liệu http://stackoverflow.com/questions/7386856/python-arabic-nlp giúp? (Và một phần mở rộng http://nltk.org/api/nltk.stem.html#module-nltk.stem.isri) –

Trả lời

6

Tôi luôn khuyên bạn nên sử dụng nltk.tokenize.wordpunct_tokenize. Bạn có thể dùng thử nhiều mã thông báo NLTK tại số http://text-processing.com/demo/tokenize/ và tự mình xem.

+0

sự khác biệt giữa hầu hết các trình mã thông báo đó là gì? và điều đó có nghĩa là hầu hết các chức năng NLTK sẽ không hoạt động với arabic? –

+2

TreebankWordTokenizer được đào tạo trên tường văn bản tạp chí đường phố, đó là ascii, vì vậy nó không bao giờ hoạt động tốt trên văn bản unicode. PunctWordTokenizer được đào tạo trên nhiều văn bản hơn, nhưng tôi thấy rằng nó ít có thể dự đoán được hơn phần còn lại của chúng, sử dụng cụm từ thông dụng, làm cho chúng có thể sử dụng được trên bất kỳ ngôn ngữ nào, với kết quả dự đoán được. – Jacob

+0

NLTK nói chung hoạt động tốt với arabic, và bất kỳ văn bản unicode nào, nó chỉ là một số mô hình mong đợi ascii, và do đó không làm tốt với unicode. – Jacob

0

này là kết quả tôi nhận được với mã của tôi, nhưng tôi nhớ lại unicode không suôn sẻ trong python 2 và tôi đã sử dụng 3,5

nltk.word_tokenize('في_بيتنا كل شي لما تحتاجه يضيع ...ادور على شاحن فجأة يختفي ..لدرجة اني اسوي نفسي ادور شيء ') 

[ 'في_بيتنا', 'كل', 'شي ' 'لما', 'تحتاجه', 'يضيع', ' ... ', 'ادور', 'على', 'شاحن', 'فجأة', 'يختفي', '..لدرجة', 'اني', 'اسوي', 'نفسي', 'ادور', 'شيء']

Các vấn đề liên quan