2016-04-06 11 views
1

NLTK numaralı yazıda bir sürü stemmer ve lemmatizer ile oynuyordum ama hiçbiri istediğimi yapmıyor. "Odyolog", "radyoloji", "kardiyolog", "kardiyoloji" gibi bir sürü söz var. PorterStemmer, SnowballStemmer ve WordNet'in Lemmatizer'ı Python'da denedim, ama hiçbir şey bunları aynı kovaya göndermiyor. Bunun nedeni, bunun başarılması gerektiği gibi görünüyor ve bunlar inanılmaz derecede yaygın olmayan kelimeler değil. İstenilen sonuca ulaşmak için nasıl giderdin?Kök/lemmatize ile aynı kök için * ologist ve * ology gibi kelimeler nasıl alınır?

cevap

0

Böyle bir şey mi var?

>>> s = 'cardiology' 
>>> s = s[:-5] if s.endswith('ology') else s 
>>> s = s[:-7] if s.endswith('ologist') else s 
>>> s 
'cardi' 
>>> s = 'cardiologist' 
>>> s = s[:-5] if s.endswith('ology') else s 
>>> s = s[:-7] if s.endswith('ologist') else s 
>>> s 
'cardi' 
+0

C'mon, demek istediğim bu değil. – Eli

+1

Gerçekten, verilerinizin mevcut lemmatizer/stemmer'ları "kesmek" için en uygun/en iyi yolu bulmak için nasıl göründüğüne bağlıdır. Verilerinizin temsili bir örneğini paylaşmanız, yanıtı iyileştirmeye yardımcı olur =) – alvas

1

Morfessor'e baktınız mı? Morph segmenting algoritmaları bir demet özellikleri. Görünüşe göre, aradığınız analiz bu araç kullanılarak mümkündür. İşte buradaki [1]: [0]: http://asr.aalto.fi/morfessordemo/

İlgili konular