2013-06-04 19 views
5

Bu yüzden, NLTK. numaralı belgede tek bir terim oluşturmak için birden çok terimi nasıl birleştirebileceği konusunda herhangi bir fikrin olup olmadığını merak ediyordum. ÖrneğinNLTK'de tagger'e bileşik sözcükler nasıl eklenir?

, bunu yaptığımda:

nltk.pos_tag(nltk.word_tokenize('Apple Incorporated is the largest company')) 

Benim verir:

[('Apple', 'NNP'), ('Incorporated', 'NNP'), ('is', 'VBZ'), ('the', 'DT'), ('largest', 'JJS'), ('company', 'NN')] 

Nasıl olmasını Birlikte 'Apple' ve 'Incorporated' koymak yapabilirim ('Apple Incorporated','NNP')

+1

Bir chunker/ayrıştırıcısına ihtiyacınız olacak ve daha sonra parçaları/ifadeyi '_ ile eşleştirecek, ardından yapıyı tekrar tuple düzleştirecektir. – alvas

cevap

0

nltk.RegexParser'a göz atmayı deneyebilirsiniz. Düzenli ifadelere dayanarak konuşma etiketli içeriğin bir kısmını parçalamanıza olanak tanır. sizin örnekte, bu size verecekti

pattern = "NP:{<NN|NNP|NNS|NNPS>+}" 
c = nltk.RegexpParser(p) 
t = c.parse(nltk.pos_tag(nltk.word_tokenize("Apple Incorporated is the largest company"))) 
print t 

gibi bir şey yapabileceğini:

Tree('S', [Tree('NP', [('Apple', 'NNP'), ('Incorporated', 'NNP')]), ('is', 'VBZ'), ('the', 'DT'), ('largest', 'JJS'), Tree('NP', [('company', 'NN')])]) 
0

kod bunu yapmak gerekiyordu tam olarak ne yapıyor. Konuşma etiketlerinin bir kısmını belirteçlere ekliyor. 'Apple Incorporated' tek bir jeton değildir. Bu iki ayrı simge ve buna göre tek bir POS etiketi uygulanamaz. Bu doğru davranış.

İş için yanlış aracı kullanmaya çalıştığınızı merak ediyorum. Ne yapmaya çalışıyorsun/Neden yapmaya çalışıyorsun? Belki de POS etiketleme yerine kolokasyonları tanımlamak ister misiniz? Buraya bir göz atmanız gerekebilir:collocations module

+0

Her bir sözcük türünü alan ve metinde bir işlev gerçekleştiren bir program yapmaya çalışıyorum. Örneğin, etiket 'Corp' ise, belirli bir işlevi yerine getirin. Etiketleri değiştirebileceğimi düşünüyordum ve bir şekilde nltk ile nasıl yapacağımı bilemediğimi düşünerek elimden geleni yapıyordum, ama bunu nasıl yapacağımı da bilmiyorum! Temel olarak, ne tür bir kelime olduğunu tanır ve üzerinde bir işlev gerçekleştirir. Herhangi bir yardım? – user2403500

+0

Bunun normal bir prosedür olduğunu anlıyorum, ama ('Apple,' NNP ') (' Apple Corporation ',' Corp ') ile nasıl değiştirebileceğimi biliyor musunuz merak ediyorum.) Şirketlerde 'Apple Corporation' ise. – user2403500