ahmetaa / zemberek-nlp

NLP tools for Turkish.
Other
1.14k stars 207 forks source link

Double Quotation Mark and sentences detections #192

Closed gokhanakgul closed 5 years ago

gokhanakgul commented 5 years ago

Hi ,

I was testing your first sample in Turkish Sentence Extraction. I attached my sample text file . I figure out sentence extraction issue if a sentence starts with double quotation mark and including a punctuation like ( . ! ...) sentence ends without closing double quotation included.

I extracted following sentences from attached text .

` Ay hep beraber yaşadıkları mağaranın ağzında parladı.

"Arrh!

" dedi Baba Kurt. ` How can I correctly extarct the text as following.

` Ay hep beraber yaşadıkları mağaranın ağzında parladı.

"Arrh!"

dedi Baba Kurt. `

Best Regards

rudyard.txt

ahmetaa commented 5 years ago

This is a known issue. Sentence boundary detection with narration is not an easy task.Perhaps some improvement can be made for simple cases like the example you gave. but for example what would a human do for a case like:

Sonra "Merhaba! Bugün hava çok güzel. " diye ekledi adam.

gokhanakgul commented 5 years ago

Hi ,

Is it possible to write new TurkishSentenceExtractor via TurkishTokenizer class ? TurkishTokenizer is providing _SYMBOLIC_NAMES of stream a file or a paragraph . Cant we easy describe the scope of a sentence ? We should care only right Punctuation when we need to ending a sentence . Also we should define some transactional Punctuation . For example. double quato and paranthesis shoul be a transactional Punctuation character.

What do you think ?

My opinion about your sample , it is a just one sentence .

Sonra "Merhaba! Bugün hava çok güzel. " diye ekledi adam.

I extracted following description from tdk.gov.tr

`Tırnak İşareti ( “ ” )

  1. Başka bir kimseden veya yazıdan olduğu gibi aktarılan sözler tır­nak içine alınır: Türk Dil Kurumu binasının yan cephesinde Atatürk’ün “Türk dili, Türk milletinin kalbidir, zihnidir.” sözü yazılıdır. Dil ve Tarih-Coğrafya Fakültesinin ön cephesinde Atatürk’ün “Hayatta en hakiki mürşit ilimdir.” vecizesi yer almaktadır. Ulu önderin “Ne mutlu Türk’üm diyene!” sözü her Türk’ü duygulandırır.

Bakınız, şair vatanı ne güzel tarif ediyor:

“Bayrakları bayrak yapan üstündeki kandır.

Toprak eğer uğrunda ölen varsa vatandır.”

UYARI: Tırnak içindeki alıntının sonunda bulunan işaret (nokta, soru işareti, ünlem işareti vb.) tırnak içinde kalır:

“İzmir üzerine dünyada bir şehir daha yoktur!” diyorlar. (Yahya Kemal Beyatlı)

  1. Özel olarak vurgulanmak istenen sözler tırnak içine alınır: Yeni bir “barış taarruzu” başladı.

  2. Cümle içerisinde eserlerin ve yazıların adları ile bölüm başlıkları tırnak içine alınır:

    Bugün öğrenciler “Kendi Gök Kubbemiz” adlı şiiri incelediler.

    “Yazım Kuralları” bölümünde bazı uyarılara yer verilmiştir.

UYARI: Cümle içerisinde özel olarak belirtilmek istenen sözler, kitap ve dergi adları ve başlıkları tırnak içine alınmaksızın eğik yazıyla dizilerek de gösterilebilir:

Höyük sözü Anadolu’da tepe olarak geçer.

  Cahit Sıtkı’nın Şairin Ölümü şiirini Yahya Kemal çok sevmişti. (Ahmet Hamdi Tanpınar)

UYARI: Tırnak içine alınan sözlerden sonra gelen ekleri ayırmak için kesme işareti kulla­nılmaz: Elif Şafak’ın “Bit Palas”ını okudunuz mu?

  4. Bilimsel çalışmalarda künye verilirken makale adları tırnak içinde yazılır.`
ahmetaa commented 5 years ago

We actually tried that technique before (tokenization before segmentation). But I prefer the current method. I will consider this issue. Perhaps adding a configuration parameter to the TurkishSentenceExtractor that allows ignoring processing text in double quotes may give users some flexibility. No promises though.

gokhanakgul commented 5 years ago

Thank you so much.

teaddict commented 5 years ago

I have same problem with this : Ünlü yazar CS Lewis, “Ne! Sen de mi? Bir tek benim sanıyordum dediğimiz anda başlar arkadaşlık” diyordu.

It creates 3 sentences: Ünlü yazar CS Lewis, “Ne! Sen de mi? Bir tek benim sanıyordum dediğimiz anda başlar arkadaşlık,” diyordu.

ahmetaa commented 5 years ago

You can review https://github.com/ahmetaa/zemberek-nlp/commit/cf3789bc65f780fce89b9b81165d3c5f08218d1b if you have time. This may not be suitable sor some cases. But at least there is an option now.

ahmetaa commented 5 years ago

I am marking this as closed since there is a way to do this.