10

Ücretsiz metinden yer açmak için önerilen yöntemler nelerdir?Metinlerden yerleri ayıklamak için yöntemler?

Düşünebildiğim gibi "yerde ... kelimeler ..." gibi normal ifade kurallarını kullanmaktır. Fakat bundan daha iyi yaklaşımlar var mı?

Ayrıca, ülkeler ve şehirler için isimlerle birlikte bir karma tablo tablosu araması yapmayı düşünebilir ve daha sonra her alıntı metnini metinden karma tablosununkiyle karşılaştırır.

Daha iyi yaklaşımları bilen var mı?

Düzenleme: Tweet'leri metinden konum almayı deniyorum. Dolayısıyla, çok sayıda tweet konusu, bir yöntem için seçimimi de etkileyebilir.

cevap

10

Tüm kural tabanlı yaklaşımlar başarısız olacaktır (metniniz gerçekten "özgür" ise). Bu regex, bağlam-içermeyen dilbilgileri, her türlü arama içerir ... İnan bana, ben daha önce orada oldum :-)

Bu sorun, Adlandırılmış Öğe Tanıma olarak adlandırılır. Yer, en çok çalışılan 3 sınıftan biridir (Kişi ve Organizasyon ile). Stanford NLP, son derece güçlü bir açık kaynak kodlu Java uygulamasına sahiptir: http://nlp.stanford.edu/software/CRF-NER.shtml

Uygulamaları, diğer programlama dillerinde kolayca bulabilirsiniz.

+0

Tweet'lerin metninden yerleri ayıklamaya çalışıyorum. Saniyede yüksek miktarda tweets göz önüne alındığında, sanırım yavaşlardı. Sağ? –

+0

Hayır.Eğitim yavaş ve hafıza tüketir, ancak çalışma zamanında bu son derece verimlidir. – Blacksad

1

Geçerli konumlarınızın tümünü sıralanmış bir listeye koyun. Büyük/küçük harfe duyarlılığı karşılaştırmayı planlıyorsanız, listenizdeki durumun zaten normalleştirilmiş olduğundan emin olun.

Yapmanız gereken tek şey giriş metninizdeki "sözcükleri" ayrı ayrı çevirmektir ve her yeni kelimenin başında, konum listenizde yeni bir ikili arama başlatın. Eşleşmeyi bulamaz bulmaz, kelimenin tamamını atlayabilir ve bir sonraki ile devam edebilirsiniz.

Olası sorun: "New York", "3rd Street", "Çin Halk Cumhuriyeti" gibi çok sözcüklü konumlar. Belki de, tüm yapmanız gereken, bsearch'unuzun sizi (mümkün!) Çok kelimeli bir sonuca götürdüğünü tespit ederseniz, 'un ilk yeni kelimesini kaydetmektir. Daha sonra, eğer tam karşılaştırma başarısız olursa - muhtemelen birkaç kelime sonra - tek yapmanız gereken, başladığınız bir önceki ile ilgili olarak bu 'sonraki' kelimeye geri dönmek.

Ne "kelimesi" ne hakkında: konum listenizi hazırlarken, konumların içinde görünebilecek tüm karakterlerin bir listesini yapın. Sadece bu listeden karakterler içeren ifadeler geçerli bir 'kelime' olarak kabul edilebilir.

+0

Başka bir olası sorun bakmanızı öneririz bir çok kelimeli konumu ilk bölümü kendi içinde bir konum olabileceğini olabilir. Örneğin "Berlin" ve "Berlin Heights, OH". – usr2564301

0

Tweetler ne kadar hızlı geliyor? Tam twitter yangın hortumu veya bazı filtreleme sorguları gibi? Biraz daha karmaşık bir yaklaşım, anlattığınız şeye benzeyen bir benzetme entegre edilmiş bir NLP aracı kullanıyor. Çok az sayıda NLP aracı twitter oranlarını koruyacak ve çok azı, tüm leet konuşmasından dolayı twitter ile çok iyi bir performans sergileyecek. NLP, ihtiyaçlarınız doğrultusunda hassas veya hatırlatma için ayarlanabiliyor, gazetehanedeki kilitlemelerin sınırlandırılması. ben Rosoka (ayrıca Amazon AWS aracılığıyla Rosoka Cloud) ve GeoGravy

İlgili konular