2010-03-31 17 views
6

Kesin bilgiler: Kimse bir TwitterAnalyzer veya TwitterTokenizer Lucene için bilen var mı?Lucene'de Twitter İletisi Tokenizing Twitter Mesajlar

Daha detaylı versiyonu:

Ben dizine Lucene olarak tweets bir numara istiyorum ve @user veya #hashtag bozulmamış gibi terimleri tutun. StandardTokenizer, noktalama işaretini (çünkü alan adlarını, e-posta adreslerini tutmak veya kısaltmaları tanımak gibi başka yararlı şeyler yapar) çalışmaz çünkü çalışmaz. StandardTokenizer'ın yaptığı her şeyi yapan ancak @user ve #hashtag gibi terimlere dokunmayan bir analiz cihazına nasıl sahip olabilirim?

Benim şu anki çözüm analizörü içine besleyen ve diğer alfanümerik dizeleri tarafından karakterleri değiştirmeden önce tweet metni preprocess etmektir. Örneğin, bu yöntem meşru e-posta adreslerini kırar ancak bununla yaşayabilirim. Bu yaklaşım mantıklı mı?

Şimdiden teşekkürler!

Amaç

+0

Son çözümün neye benziyor? – Karussell

+2

Eğer solr için bir çözüme ihtiyacınız varsa bu yardımcı olabilir: https://issues.apache.org/jira/browse/SOLR-2059 ve "# => ALPHA" "@ => ALPHA" gibi bir şey – Karussell

cevap

5

StandardTokenizer ve StandardAnalyzer temelde bir küçük harf filtre ile (sözcük uçlarında 'ler gibi standart jeton karakteri her türlü kaldırır) bir StandardFilter, üzerinden belirteçleri (kelimeleri küçük harfe geçmesi) ve son olarak bir StopFilter tarafından. Bu sonuncusu, "as", "in", "for", vb. Gibi önemsiz sözcükleri kaldırır.

Başlamak için kolayca yapabileceğiniz şey, StandardAnalyzer ile aynı performansı gerçekleştiren ancak WhitespaceTokenizer olarak kullanan kendi analiz cihazınızı uygulamaktır. Giriş akışını işleyen ilk öğe. twitter özgü simgeleştiricisine üzerinde https://github.com/brendano/ark-tweet-nlp/blob/master/src/cmu/arktweetnlp/Twokenize.java

+0

Teşekkürler. StandardTokenizer yerine WhitespaceTokenizer kullanarak kendi analiz cihazımı uygulamayı denedim. Ancak bu, ana bilgisayar adlarını, e-posta adreslerini ve tanınmayan ve hatalı olarak belirtilmiş bazı diğer öğeleri bırakır. Özel TwitterTokenizer'ımla (ve başka bir şey yapmayan @s ve #s'nin başka bir şeyi yapmaz) bir akışı işlemek istiyorum. Daha sonra sonuçta elde edilen akışı bir StandardTokenizer'e aktarıp oradan devam ediyorum. Ancak, bir Analizörün anlayabildiğim kadarıyla zincirin başında sadece bir Tokenizer olabilir. –

+1

Başka bir yaklaşım PerFieldAnalyzerWrapper'ı kullanmak ve karma etiketler ve kullanıcı referanslarını açık bir şekilde aramak ve bunları belgenin ayrı bir alanına koymak (örneğin, 'etiketler' ve 'yanıtlar') için içeriğe ikinci bir geçiş yapmak olabilir. Bu alana ait analizörler, sırasıyla #tag ve @ useruser olayları için yalnızca jetonları döndürür. – Thomas

+0

Evet, bu mantıklı. Teşekkürler! –

0

bir öğretici değiştirilmiş bir sürümü şudur: here

0

Heyecan API Bios vs ile tüm Tweets dönmek için söylenebilecek "varlıklar" (hashtag, userIds, urls vb.) zaten içerikten koleksiyonlara ayrıştırıldı.

https://dev.twitter.com/docs/entities

Yani sadece Twitter millet zaten sizin için yapmış şey yeniden yapmak için bir yol aramıyorlar?