2015-05-03 14 views
6

Diğer birkaç yazının ardından, [ör. Bu Genellikle daha sonra almak geçmiş/gelecek/mevcut fiiller kullanımı, için bir değer döndürenBir cümlenin gerginliğini belirleme Python

from nltk import word_tokenize, pos_tag 

def determine_tense_input(sentance): 
    text = word_tokenize(sentance) 
    tagged = pos_tag(text) 

    tense = {} 
    tense["future"] = len([word for word in tagged if word[1] == "MD"]) 
    tense["present"] = len([word for word in tagged if word[1] in ["VBP", "VBZ","VBG"]]) 
    tense["past"] = len([word for word in tagged if word[1] in ["VBD", "VBN"]]) 
    return(tense) 

: Detect English verb tenses using NLTK, Identifying verb tenses in python, Python NLTK figure out tense] ben POS etiketlemenin kullanılması Python bir cümlenin gergin belirlemek için aşağıdaki kodu yazdım sentazın gerginliği olarak maksimum değeri. Doğruluğu makul derecede iyi, ama bunu yapmanın daha iyi bir yolu olup olmadığını merak ediyorum. Örneğin, şimdi, bir senaryonun gerginliğini ayıklamaya daha adanmış bir paketin yazılı olduğu şans eseri var mıdır? [not - 3 yığın taşma yayının 2'si 4 yaşındadır, bu yüzden işler şimdi değişmiş olabilir]. Veya alternatif olarak, doğruluğu artırmak için nltk içinden farklı bir ayrıştırıcı kullanmalı mıyım? Değilse, yukarıdaki kod bir başkasına yardımcı olabilir umuyoruz!

+0

Belki daha ince taneli bir tagger bulmaya çalışabilirsin. Etiketlenmiş bir cesete dayanarak ya da eskiden Stanford'dan bir şey kullanarak kendi başına eğitim yaparak. Bazı amaçlar için (bu gibi) nltk.pos_tag (veya nltk_data'daki mevcut şirketlerden) etiketleme işleminin size çok yardımcı olmadığını görüyorum. Daha farklı sınıflara sahip bir tagger kullanmak, benzer senaryolarda daha önce bana yardımcı oldu. Bu, genelde oldukça etki alanına özgü açıklamalı bir şirket olmasına rağmen. – Igor

+1

Daha doğru bir yaklaşım için, birincil ve ikincil zaman arasında ayrım yapmanız gerekir. Benzer bir soruya verdiğim cevap şu şekilde yardımcı olabilir: http://stackoverflow.com/a/22146151/1011791 –

+0

@ChthonicProject - Teşekkür ederim - Bu yazıyı görmemiştim ve doğru yönde bana işaret ediyor – kyrenia

cevap

0

Yaklaşımınızı çeşitli yollarla güçlendirebilirsiniz. İngilizce dilbilgisi hakkında daha fazla düşünebilir ve gözlemlediğiniz her şeye dayanarak daha fazla kural ekleyebilirsiniz. ya da istatistiksel yaklaşımı zorlayabilir, bazı (ilgili) özellikleri çıkarabilir ve tüm partiyi bir sınıflandırıcıya atabilirsiniz. NLTK, oynamak için birçok sınıflandırıcı sunar ve NLTK kitabında belgelenmiştir.

Her iki dünyanın da en iyisine sahip olabilirsiniz: Elle yazılmış kurallar, sınıflandırıcıya beslenen ve onlara ne zaman güvenebileceğine karar verecek özellikler biçiminde olabilir.

1

Cümlenin bağımlılığını almak için Stanford Parser'u kullanabilirsiniz. Bağımlılık ayrıştırmasının kökü, cümleyi tanımlayan 'birincil' fiil olacaktır (belirli dil terimlerinin ne olduğundan emin değilim). Ardından, bu fiil üzerinde POS etiketini kullanarak gergisini bulabilirsiniz ve bunu kullanın.

İlgili konular