Bir cümledeki kelimeleri nasıl çıkarabilirim ve her birinin konuşmanın bir parçası olduğunu nasıl belirleyebilirim? [kapalı]


19

Cümle alan ve içerdiği her kelimeyi tanımlayan ve her kelimenin konuşmasının bir bölümünü tanımlayan bir şey yazmak istiyorum.

Örneğin

Merhaba Dünya, ben bir cümleyim

bunu iade ederdi

verb noun, pronoun verb adjective noun

İdeal olarak, sonunda bir adım daha ileri götürmek ve bir cümle almak ve programlı olarak neyi yorumlamaya çalıştığını ve belki de bu konuda bir şeyler yapmasını istiyorum.

Benim sorum şu, birisi böyle bir şey duydu mu?


2
"Merhaba" bir fiildir? Yani, başka ne olacağını bilmiyorum, ama bir fiil gibi görünmüyor.
Dan Ray

@DanRay: Belki de english.stackexchange.com için bir soru?
StriplingWarrior

1
@DanRay haha, gördün mü? Bu yüzden bir şeyin bunu yapıp yapamayacağını anlamaya çalışıyorum, çünkü görünüşe göre gramerde berbatım.
Vinny

@Vinny - Tabii ki mümkün. Sorun şu ki, bu bir sonraki trilyon dolarlık fikir ve şu anda hala bir ürüne dönüştürülmedi.
Ramhound

1
@Vinny Evet, birisi böyle bir şey duydu.
Tulains Córdova

Yanıtlar:


18

Buna Doğal Dil İşleme denir ve bu çok büyük ve karmaşık bir alandır. Açıkladığınız gibi bir şey anıtsal bir başarıdır ve Watson gibi en iyi çözümler bile mükemmel bir yere yakın değildir.

Bunun gibi şeyler bunu zorlaştırır: "Buffalo buffalo Buffalo buffalo buffalo Buffalo buffalo"

Amerikan İngilizcesinde dilbilgisel olarak doğru bir cümle, homonymlerin ve homopofonların karmaşık dil yapıları oluşturmak için nasıl kullanılabileceğinin bir örneği olarak kullanılır. 1972'den beri literatürde tartışılmaktadır ... Steven Pinker'in 1994 tarihli The Language Instinct kitabında "görünüşte saçma" ama dilbilgisel bir cümle örneği olarak yer aldı ...

Cümlenin anlamı, Buffalo, New York şehrini ve "buffalo'ya" ("zorbalık ya da korkutmak" anlamına gelir) bir şekilde nadir olan fiili kullandığında ve noktalama işaretleri ve dilbilgisi genişletildiğinde anlaşılır hale gelir. şöyle okur: "Buffalo buffalo buffalo buffalo, buffalo Buffalo buffalo." Eş anlamlı kelimeler kullanıldığında anlam daha da belirginleşir: "Buffalo bizonu bizon Buffalo bizonu, bizzat Buffalo bizonu zorbalık."


1
Aradığım şey bu! Bunu daha küçük ölçekte adapte eden var mı? Açık kaynak? Bunun örnekleri daha küçük ölçeklerde mi kullanılıyor?
Vinny

@Vinny AFAIK açık kaynak kodunda pek bir şey yok, çünkü bu sorunları çözmek MS Word gramer tespiti gibi şirketler için son derece karlı. İnanıyorum ki mevcut bazı chat-bot programları vardır.
Ryathal

1
@Vinny Zorluğun ölçekle ilgisi yok. Doğal dil işleme, "ölçeği" düşürdüğünüzde azaltılmayan doğal bir karmaşıklığa sahiptir.
Tulains Córdova

6

İlk cümlenizi çözmekle birlikte bir cümleyi bölmek ve dilbilgisel doğruluğu belirlemek ikinci probleminizden daha kolay olsa da, fiil isimleri veya yüzme, programlama, vb. Cevap.

Ama İkinci sorun - insanlar mükemmel bir çözüm bulmak için büyük çabalar koyduk, ama gerçekten mükemmel "yorumlama" algoritma gerçekleşebilir pratik İngilizce gibi herhangi bir doğal dil için değil - farklılıklar vardır olacak senin algoritma berbat. Bu alan - Yapay Zeka, Bilgisayar Bilimi ve Dilbilim arasındaki melez NLP olarak bilinir . Şunu düşünün: Cümleleri "yorumlarken" Google Çeviri bile mükemmel değildir.

Ancak yine de, bu uğraşmak için çok ilginç bir alandır.


@StriplingWarrior Sadece OP'nin ortaya koyduğu iki sorun arasında yeterince kontrast oluşturmak istedim. Kayıt edilmiş. Edit on its way
yati sagade

4

Bu Wikipedia makalesini okumaya başlamanız gerektiğini düşünüyorum:

http://en.wikipedia.org/wiki/Part-of-speech_tagging

(bu bir araştırma alanıdır, bunun için kolay bir çözüm beklemeyin.)


2
NLP'nin bugünün bilgisayarlarında çok büyük, zor ve muhtemelen zor olsa da, POS etiketlemesinin en kolay kısmı olduğunu ve yeterli büyüklük veya çok fazla özveri ve manuel kural yazımıyla neredeyse mükemmel bir şekilde çözülebileceğini eklemeliyim. kesinlikle% 99'un üzerinde doğruluk. Bu ihtiyaçlarınız için yeterli olabilir.
Kilian Foth

teşekkür ederim, tam da aradığım şey buydu.
Amc_rtty

aslında OP açıklamasına göre, @KilianFoth
Amc_rtty

-1

Bunu yapmanın ucuz bir yolu, sözlüğün bir veritabanını oluşturmak olacaktır (birisinin bunu yaptığından neredeyse eminim).

Tabloda iki alana ihtiyacınız var: wordveusage

İfadeyi dizelerden oluşan bir diziye dönüştürün (her sözcük bir dize olur) ve bağımsız olarak:

select 'usage' from Dictionary WHERE 'word' = $word; 

Bu ağır bir çözüm, ama geçmişte kullandığım bir çözüm.


5
Bu, her kelimenin tek bir olası POS'u olduğunu varsayar ve eminim ki durum böyle değildir.
microtherion

Kabul edildi - bunun, bağlama bağlı olarak isimler, fiiller vb. Gibi davranabilen tüm kelimelerle (en azından İngilizce olarak) uygulanabilir bir şekilde çalışması mümkün değildir.
Derek
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.