Saya gagal membendung istilah Arab tertentu menggunakan SnowballStemmer. Banyak istilah yang berhasil di-root tetapi beberapa istilah menyebabkan AttributeError dimunculkan. Silakan lihat di bawah untuk contoh minimal yang gagal pada istilah 'dari'.
(anaconda2-4.4.0) richard-balmer-macbook:~ richardbalmer$ pip freeze | grep nltk
nltk==3.2.5
(anaconda2-4.4.0) richard-balmer-macbook:~ richardbalmer$ ipython
Python 2.7.13 |Anaconda custom (x86_64)| (default, Dec 20 2016, 23:05:08)
Type "copyright", "credits" or "license" for more information.
IPython 5.3.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: from nltk.stem.snowball import SnowballStemmer
In [2]: stemmer = SnowballStemmer('arabic')
In [3]: stemmer.stem(u'تسدد')
Out[3]: u'\u062a\u0633\u062f\u062f'
In [4]: stemmer.stem(u'من')
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-ffa733106049> in <module>()
----> 1 stemmer.stem(u'من')
/Users/richardbalmer/.pyenv/versions/anaconda2-4.4.0/lib/python2.7/site-packages/nltk/stem/snowball.pyc in stem(self, word)
762 modified_word = self.__Suffix_Verb_Step2b(modified_word)
763 if not self.suffix_verb_step2b_success:
--> 764 modified_word = self.__Suffix_Verb_Step2a(modified_word)
765 if self.is_noun:
766 modified_word = self.__Suffix_Noun_Step2c2(modified_word)
/Users/richardbalmer/.pyenv/versions/anaconda2-4.4.0/lib/python2.7/site-packages/nltk/stem/snowball.pyc in __Suffix_Verb_Step2a(self, token)
533 break
534
--> 535 if suffix in self.__conjugation_suffix_verb_present and len(token) > 5:
536 token = token[:-2] # present
537 self.suffix_verb_step2a_success = True
AttributeError: 'ArabicStemmer' object has no attribute '_ArabicStemmer__conjugation_suffix_verb_present'
@richbalmer Terima kasih telah melaporkan masalah ini.
@LBenzahia Bisakah Anda membantu untuk melihat ini? Terima kasih sebelumnya!
Hai @richbalmer terima kasih atas laporannya, Kata pertama 'تسدد' adalah kata dasar terbaik karena Snowball arabic stemmer berdasarkan algoritma light stemming berhubungan dengan prefiks / sufiks, jika Anda mencari root dari "تسدد" Anda dapat menggunakan ISRI (root -based stemmer / deep stemming), kata kedua 'من' adalah stop word, Anda harus menggunakan filter stop word sebelum mulai menggunakan Snowball ArabicStemmer, juga stemmer ini tidak menangani kasus ketika kata tersebut memiliki 2 huruf.
Bagaimanapun, saya telah memperbaiki masalah dalam PR # 1856 ini.
Terima kasih lagi !
@LBenzahia terima kasih telah melihat ini begitu cepat! Saya mendapatkan:
File "/Users/richardbalmer/src/nltk/nltk/stem/util.py", line 24
arabic_stopwords = ['إذ',
^
SyntaxError: Non-ASCII character '\xd8' in file /Users/richardbalmer/src/nltk/nltk/stem/util.py on line 24, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
Yang juga tampaknya menyebabkan pengujian gagal di Jenkins (https://nltk.ci.cloudbees.com/job/pull_request_tests/454/TOXENV=py27-jenkins,jdk=jdk8latestOnlineInstall/testReport/nose.failure/Failure/runTest /). Saya pikir semua yang perlu Anda lakukan adalah meletakkan # -*- coding: utf-8 -*-
di atas stem/util.py
.
Juga, setelah memperbaikinya secara lokal saya mendapatkan UnicodeWarning:
/Users/richardbalmer/src/nltk/nltk/stem/snowball.py:748: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal
if word in arabic_stopwords:
Mungkin layak membuat string unicode stopwords itu.
Selain itu, sepertinya perbaikan Anda berfungsi dengan baik untuk saya - terima kasih lagi!
ps Satu saran lain: menguji penyertaan set cukup jauh lebih cepat daripada penyertaan daftar, jadi mungkin ada baiknya menjadikan daftar stopword sebagai satu set.
@richbalmer, apakah Anda menggunakan python2.7? ,
Mungkin layak membuat string unicode stopwords itu.
selesai untuk python2.7, uji lagi dan beri tahu saya, Ini berfungsi dengan baik untuk saya. Saya telah memperbarui PR
Yup saya menggunakan 2.7. Terlihat bagus @LBenzahia - terima kasih lagi!
Masih mengalami kesalahan:
AttributeError: Objek 'ArabicStemmer' tidak memiliki atribut '_ArabicStemmer__conjugation_suffix_verb_present'
Saya menggunakan python 3
@NouraAls diselesaikan di PR
Komentar yang paling membantu
@richbalmer Terima kasih telah melaporkan masalah ini.
@LBenzahia Bisakah Anda membantu untuk melihat ini? Terima kasih sebelumnya!