Parçalama ve Bilgi Çıkarma
Chunking nedir?
Doğal dil işlemede önemli süreçlerden biri olan parçalama, konuşma bölümlerini (POS) ve kısa cümleleri tanımlamak için kullanılır. Diğer basit bir deyişle, parçalama ile cümlenin yapısını elde edebiliriz. Aynı zamandapartial parsing.
Yığın desenler ve oyuklar
Chunk patternsNe tür kelimelerin bir yığın oluşturduğunu tanımlayan konuşma bölümü (POS) etiketlerinin kalıplarıdır. Değiştirilmiş düzenli ifadeler yardımıyla yığın desenleri tanımlayabiliriz.
Dahası, ne tür kelimelerin bir yığın halinde olmaması gerektiği için kalıplar da tanımlayabiliriz ve bu parçalanmamış kelimeler chinks.
Uygulama örneği
Aşağıdaki örnekte, cümlenin ayrıştırılmasının sonucuyla birlikte “the book has many chapters”, hem bir yığın hem de bir çentik desenini birleştiren isim cümleleri için bir dilbilgisi vardır -
import nltk
sentence = [
("the", "DT"),
("book", "NN"),
("has","VBZ"),
("many","JJ"),
("chapters","NNS")
]
chunker = nltk.RegexpParser(
r'''
NP:{<DT><NN.*><.*>*<NN.*>}
}<VB.*>{
'''
)
chunker.parse(sentence)
Output = chunker.parse(sentence)
Output.draw()
Çıktı
Yukarıda görüldüğü gibi, bir yığın belirtme modeli aşağıdaki gibi kaşlı ayraçlar kullanmaktır -
{<DT><NN>}
Ve bir boşluk belirtmek için, aşağıdaki gibi parantezleri çevirebiliriz -
}<VB>{.
Şimdi, belirli bir kelime öbeği türü için, bu kurallar bir dilbilgisinde birleştirilebilir.
Bilgi Çıkarma
Bilgi çıkarma motoru oluşturmak için kullanılabilecek etiketleyicilerden ve ayrıştırıcılardan geçtik. Temel bir bilgi çıkarma boru hattı görelim -
Bilgi çıkarmanın aşağıdakiler dahil birçok uygulaması vardır:
- İş zekası
- Hasat etmeye devam et
- Medya analizi
- Duygu algılama
- Patent araştırması
- E-posta taraması
Adlandırılmış varlık tanıma (NER)
Adlandırılmış varlık tanıma (NER) aslında adlar, kuruluşlar, konum vb. Gibi en yaygın varlıklardan bazılarını çıkarmanın bir yoludur. Cümle belirtme, POS etiketleme, yığın oluşturma, NER, ve yukarıdaki şekilde verilen boru hattını takip eder.
Misal
Import nltk
file = open (
# provide here the absolute path for the file of text for which we want NER
)
data_text = file.read()
sentences = nltk.sent_tokenize(data_text)
tokenized_sentences = [nltk.word_tokenize(sentence) for sentence in sentences]
tagged_sentences = [nltk.pos_tag(sentence) for sentence in tokenized_sentences]
for sent in tagged_sentences:
print nltk.ne_chunk(sent)
Bazı değiştirilmiş Adlandırılmış varlık tanıma (NER), ürün adları, biyo-tıbbi varlıklar, marka adı ve çok daha fazlası gibi varlıkları çıkarmak için de kullanılabilir.
İlişki çıkarma
Yaygın olarak kullanılan bir başka bilgi çıkarma işlemi olan ilişki çıkarma, çeşitli varlıklar arasındaki farklı ilişkileri çıkarma işlemidir. Tanımı bilgi ihtiyacına bağlı olan kalıtım, eşanlamlılar, benzerlik vb. Gibi farklı ilişkiler olabilir. Örneğin, bir kitabın yazısını aramak istiyorsak, yazarın yazar adı ile kitap adı arasındaki bir ilişki olacağını varsayalım.
Misal
Aşağıdaki örnekte, yukarıdaki diyagramda gösterildiği gibi, Adlandırılmış varlık ilişkisine (NER) kadar kullandığımız IE işlem hattını kullanıyoruz ve bunu NER etiketlerine dayalı bir ilişki modeli ile genişletiyoruz.
import nltk
import re
IN = re.compile(r'.*\bin\b(?!\b.+ing)')
for doc in nltk.corpus.ieer.parsed_docs('NYT_19980315'):
for rel in nltk.sem.extract_rels('ORG', 'LOC', doc, corpus = 'ieer',
pattern = IN):
print(nltk.sem.rtuple(rel))
Çıktı
[ORG: 'WHYY'] 'in' [LOC: 'Philadelphia']
[ORG: 'McGlashan & Sarrail'] 'firm in' [LOC: 'San Mateo']
[ORG: 'Freedom Forum'] 'in' [LOC: 'Arlington']
[ORG: 'Brookings Institution'] ', the research group in' [LOC: 'Washington']
[ORG: 'Idealab'] ', a self-described business incubator based in' [LOC: 'Los Angeles']
[ORG: 'Open Text'] ', based in' [LOC: 'Waterloo']
[ORG: 'WGBH'] 'in' [LOC: 'Boston']
[ORG: 'Bastille Opera'] 'in' [LOC: 'Paris']
[ORG: 'Omnicom'] 'in' [LOC: 'New York']
[ORG: 'DDB Needham'] 'in' [LOC: 'New York']
[ORG: 'Kaplan Thaler Group'] 'in' [LOC: 'New York']
[ORG: 'BBDO South'] 'in' [LOC: 'Atlanta']
[ORG: 'Georgia-Pacific'] 'in' [LOC: 'Atlanta']
Yukarıdaki kodda, ieer adlı dahili bir külliyat kullandık. Bu külliyatta cümleler Adlandırılmış varlık ilişkisine (NER) kadar etiketlenmiştir. Burada sadece istediğimiz ilişki modelini ve ilişkinin tanımlamasını istediğimiz NER türünü belirlememiz gerekir. Örneğimizde, bir kuruluş ile bir konum arasındaki ilişkiyi tanımladık. Bu modellerin tüm kombinasyonlarını çıkardık.