Notepad ++: cümle sınırına uzun metin bölmek için herhangi bir eklenti veya regex veya makro var mı


0

Cümle sınırında uzun sayfalar veya paragraflar kırmamı gerektiren, İngilizce için tam durak (.) Ve Hintçe için Poorn-Viraam (।) gerektiren çeviri çalışmaları yapıyorum.

Buna "hizalama" ing veya (muhtemelen) tokenizing denir.

Notepad ++ (w9-32 bit) için uzun metni cümlelere bölmek için herhangi bir eklenti veya düzenli ifade ya da makro var mı? (düz metin txt dosyalarında),

Regex'te sadece bulamıyorum. ve ile değiştirin. \ r \ n çünkü. kısaltılmışlık göstergesi olarak da kullanılır, örneğin, mesela, örneğin, pvt., ltd., inc., vb. Ayrıca, parantez içinde birkaç cümle varsa () [] {} varsa, bunlar da kırılmamalıdır.

Bu yüzden sanırım tek bir regex komutu yapmaz ya da tüm olasılıkları gözetmek için çok karmaşık hale gelir.

birbiri ardına yürütülen bir regex kümesi veya bir makro olmalıdır,

ya da birisi bunun için bir miktar eklenti geliştirmişse?

Teşekkürler.

Rawat


ayy! w9-32 bit -> w8-32 bit. üzgünüm.
VSRawat

1
Doğal dilleri ele almaya çalışıyorsun. Anlamsal bilgi olmadan cümlenin sonunu nasıl belirlersiniz? Bunun i.e.kısa bir el olduğunu bildiğin anlambilimi olmasaydı, cümlenin sonu olmadığını nasıl bilebilirdi? Eğer kısaltması için "ortak" (3?) Karakter uzunluğunda olan bir kelime varsa, işaretleri görmezden gelen bir regex yazabilirsiniz. Mükemmel olmayacak ama size yardımcı olabilir mi?
Seth,

Aşağı oy verirken lütfen bir yorum bırakın ... Bu bana geçerli bir soru gibi görünüyor ...
Wouter

Yanıtlar:


1

Seth'in açıkladığı gibi, bunu gerçekten yapmak için, doğal dil ayrıştırması gerekir. Şimdilik, bu yalnızca Stanford ayrıştırıcısı gibi özel uygulamalar yoluyla kullanılabilir , ancak Notepad ++ eklentileri olarak kullanılamaz. Ancak, birkaç temel varsayım göz önüne alındığında, basit regex ifadeleri kullanarak yolunuzu kesebileceğinizi düşünüyorum.

Bölmek istediğiniz cümlelerin bir '.' İle bittiğini, sonra bir boşluğa ve sonra bir büyük harf olduğuna dair varsayım yaparak başlarım. Bu mükemmel olmaz, ancak çoğu durumda parantez ve kısaltma sorununu önler .

Yani...

\. [A-Z]

Ve belki, cümleler bir rakamla başlarsa ...

\. [A-Z\d]

Ardından, boşlukları biraz daha boşluklu hale getirmek ve parantezleri daha iyi kullanmak için belki:

\.[^)\]}]*?\s+[^)\]}]*?[A-Z\d]
  • \ s + - bir veya daha fazla boşluk karakteriyle eşleşmek için
  • [^)]}] *? arkasında veya arkasında boşluk bırakma braketi olmadığından emin olmak için

Sanırım kullanım durumunuza bağlı olarak, bununla biraz daha oynayabilirsiniz ...

Düzenleme:
Bu konuda biraz daha uzun duruyordum. Bence bir cümle sadece bir harfle başlayabildiği halde ('I' veya 'A' kelimesi gibi), tek harfli bir kelimenin (ingilizce) bitmesi muhtemel değildir .

Yani kullanabilirsin

[a-zA-Z]{2}\.[^)\]}]*?\s+[^)\]}]*?[A-Z\d]

Genel bir strateji olarak, bir cümlenin sonunda veya başlangıcında bulmayı ummadığınız veya beklemeyeceğiniz şeyler için geriye bakıp, ileriye bakmakla ilgilidir.

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.