2013-09-22 63 views
6

Cho một thẻ POS, chẳng hạn như VBD, làm thế nào tôi có thể liên hợp một động từ để phù hợp với NLTK?Làm thế nào để liên hợp động từ trong NLTK cho thẻ POS?

ví dụ:

VERB: go 
POS: VBD 
RESULT: went 
+0

Bạn có nói về thẻ POS để bạn chắc chắn rằng bạn đang conjugating một động từ và không phải là một danh từ hoặc một tính từ, ví dụ? – arturomp

Trả lời

13

NLTK hiện không cung cấp cách chia động từ. Pattern-ennodebox chia động từ.

Đôi khi các ví dụ trong trang web mẫu-en không hoạt động như được hiển thị. Điều này làm việc cho tôi:

>>> from pattern.en import conjugate 
>>> verb = "go" 
>>> conjugate(verb, 
...  tense = "past",   # INFINITIVE, PRESENT, PAST, FUTURE 
... person = 3,    # 1, 2, 3 or None 
... number = "singular",  # SG, PL 
...  mood = "indicative",  # INDICATIVE, IMPERATIVE, CONDITIONAL, SUBJUNCTIVE 
... aspect = "imperfective", # IMPERFECTIVE, PERFECTIVE, PROGRESSIVE 
... negated = False)   # True or False 
u'went' 
>>> 

LƯU Ý

Nó có vẻ như conjugate chỉ kết quả đầu ra khi căng thẳng không cần một trợ động từ. Ví dụ: trong tương lai tiếng Tây Ban Nha (số ít người đầu tiên) của iriré. Bằng tiếng Anh, tương lai của go được hình thành với phụ trợ sẽ và số đi tới, dẫn đến sẽ là. Trong mã bên dưới, iré là đầu ra, nhưng không phải là sẽ là.

>>> from pattern.es import conjugate as conjugate_es 
>>> verb = "ir" 
>>> conjugate_es(verb, tense = "future") 
u'ir\xe1' 
>>> from pattern.en import conjugate as conjugate_en 
>>> verb = "go" 
>>> conjugate_en(verb, tense = "future") 
>>> 
+0

điều này có nghĩa là NLTK KHÔNG làm cách chia động từ? – mix

+0

chính xác :) (Tôi đang mở để được sai, nhưng tôi hoặc bất cứ ai khác mà tôi biết xung quanh đây đã không tìm thấy một cách để làm điều đó!) – arturomp

+1

@arturomp, tôi đã cố gắng sử dụng thì tương lai cho pattern.en . Nó có hiệu quả với bạn không vì nó không trả lại gì cho tôi. – macmania314