2012-11-25 39 views
5

Tôi đã thấy rằng đối với động từ, các biện pháp tương tự WordNet trong NLTK có thể trả về "Không" ở lần, nhưng tôi hiểu điều này sẽ không xảy ra đối với các phần khác của lời nói. Nhìn vào đoạn mã có vẻ rõ ràng rằng khi không có mối quan hệ giữa các cặp của hai từ trong bất kỳ phần nào khác của lời nói nên mang lại -1, không phải là "Không". Tuy nhiên, tôi đã nhận được kết quả này:NLTK tương tự wordnet trả về "Không" cho tính từ

>>> from nltk.corpus import wordnet as wn 
>>> plodding1 = wn.synset('plodding.a.01') 
>>> for sense in wn.synsets('unsteady','a'): 
     print sense.name, sense.path_similarity(plodding1) 

unsteady.a.01 None 
unfirm.s.01 None 

Bất kỳ suy nghĩ nào?

Trả lời

0

Các đồng bộ hóa cụ thể mà bạn đang so sánh dường như không có 'đường dẫn ngắn nhất' trong phân loại của chúng. Nếu bạn so sánh tất cả các đồng bộ của "không ổn định" với tất cả các đồng bộ của "plodding" bạn sẽ tìm thấy một số điểm giống nhau.

Tôi đã cố gắng tổng quát hơn:

from nltk.corpus import wordnet as wn 
sy1 = wn.synsets('plodding') 
sy2 = wn.synsets('unsteady') 

for s in sy1: 
    for t in sy2: 
     print "%s\t %s\t :%s" % (s.name,t.name,wn.path_similarity(s,t)) 

Và tôi nhận được:

drudgery.n.01 unsteady.a.01 :None 
drudgery.n.01 unfirm.s.01  :None 
plodding.n.02 unsteady.a.01 :None 
plodding.n.02 unfirm.s.01  :None 
slog.v.02 unsteady.a.01 :0.2 
slog.v.02 unfirm.s.01  :0.2 
leaden.s.04 unsteady.a.01 :None 
leaden.s.04 unfirm.s.01  :None 

Hy vọng rằng sẽ giúp.

7

Tính từ trong WordNet không được sắp xếp theo hệ thống phân cấp, vì vậy đường đi ngắn nhất sẽ không hoạt động với tính từ. Điều này cũng đúng với trạng từ. Các biện pháp duy nhất sẽ làm việc cho tính từ và trạng từ là các biện pháp liên quan, như biện pháp lesk. Các động từ trong WordNet được tổ chức thành các hệ thống phân cấp, nhưng có rất nhiều trong số chúng và chúng khá "ngắn", vì vậy đôi khi bạn không thể tìm thấy đường dẫn giữa các động từ (vì chúng có thể thuộc về các cấu trúc động từ khác nhau). Nói chung, bạn có thể tìm thấy các đường dẫn ngắn nhất giữa các danh từ vì chúng thuộc về một hệ thống phân cấp danh từ lớn (ít nhất là từ WordNet 3.0).

Tôi hy vọng điều này sẽ hữu ích. Thảo luận thêm về những vấn đề này cũng có thể được tìm thấy trên danh sách Tương tự WordNet :: (không phải là một phần của NLTK, mà là một gói Perl độc lập thực hiện các loại phép đo này). http://wn-similarity.sourceforge.net

Chúc may mắn, Ted