2013-03-07 14 views
7

Bu sorunun birden çok kez sorulmasını biliyordum ancak yine de "kullanılabilir" çözümle düzeltemedim. İfadelerimi nasıl tespit edeceğime dair başka fikirlerim ya da kavramlar umarım python dilinde ingilizcedir. Mevcut çözüm:Python ile İngilizce metnin okunup bulunmadığını saptayın

  • Dil Dedektör (yakut değil python: /)
  • tarihinde, ücretsiz (Artık API v2 20 dolar i akademik amaçlar için bu projeyi yapıyorum ederken bir ay ödemek zorunda Çevir . Nezaket sınırı:.?? 0 karakter/gün) piton (kaynak kodu için
  • Dil kimlik aşağısında, bağlantı bulamamışlardır automatic-language-identification)
  • Enchant (bu piton 2.7 için değil python, herhangi kılavuz ben yeniyim bahse girerim bu ihtiyacım olacak)
  • NLTK'den Wordnet (i var "wordnet.synsets" neden eksik ve sadece "wordnet.Synset" kullanılabilir bir fikir yok. çözümdeki örnek kod benim için de çalışmıyor T_T, büyük olasılıkla yeniden sürüm sorunu mu?)
  • İngilizce kelimeleri listeye kaydedin ve kelimeyi mevcutsa karşılaştırın (evet, cümlelerin twitter ve .. Eğer biliyordu: Son olarak çalışıyor dizisinden sonra P)

ÇALIŞMA çÖZÜM

aşağıdaki çalışma çözüm yukarıdaki listeye (alternatif) 'dir

  • Wikt iyonlu API (Ayrıştırmak için Urllib2 ve simplejson kullanarak). Daha sonra anahtarın -1 olup olmadığını bulun, kelimenin mevcut olmadığı anlamına gelir. başka ingilizce. Tabii ki, Twitter'da kullanmak için kelimenizi @ #,?! gibi özel bir karaktere dönüştürmek zorunda değilsiniz. Anahtarın nasıl bulunacağını öğrenmek için buraya başvurmak gerekir. Simplejson and random key value)
  • Dogukan Tufekci'nin Yanıtı (Ticked) (Zayıflık: 20 karakterden daha kısa olan tümcenin PyEnchant'ı yüklemesi gerekiyorsa ya da UNKNOWN değerini döndürmesi gerekiyor. PyEnchant Python 2.7'yi desteklemese de, yüklenemedi demektir. 20'den az karaktere cümle) için çalışan

Kaynaklar

+0

İlginç bir soru. Bir listedeki kelimelerin saklanması için bir iyileştirme, bunları bir sette veya sözlükte saklamak olacaktır. Liste yaklaşımı diğer yaklaşımların O (1) olduğu O (n) dir. – Octipi

+0

Çözümü soruya yazmayın, bunun yerine cevap olarak gönderin. Eğer cevabınız varsa, kendi sorunuzu yanıtlıyor –

cevap

8

Miguel Grinber's The Flask Mega Tutorial aracılığıyla bulduğum guess_language kitaplığını deneyebilirsiniz. Python 2 ve 3'ü destekliyor gibi görünüyor, bu yüzden tamam olmalı.

+0

Teşekkürler;) Son zamanlarda belgeleri bulamadım ve göz ardı ettim. Btw, bunun nasıl düzeltileceğine dair bir fikrin var mı? Hata almayın ama sanırım guess_language ("Benim Cümle") aramayı denediğimde, bana şu döndürür: Geri tepme (son çağrı son): "", satır 1, TypeError: 'module' object is Kalibre edilemez – 1myb

+3

İçe aktarımınız şu şekildedir: guess_language import guessLanguage öğesinden ve aramanız sanırımLanguage ('Cümle') olacaktır. Yanlış olan modülü arıyorsun. Ne yazdığını anlamaya çalışırsanız, yazım hatası gerçekten yararlıdır. Bu durumda bir 'modül' nesnesini çağırdığınızı söylüyor. –

+0

Tefekci, Çok teşekkürler;) Rahatsız edici belgeler - .- – 1myb

1

Sen dilleri algılamak için Hidden Markov modelleri faydalanmak mümkün olabilir, her dil kendi niteliklerine sahip olacaktır.

+0

Bazı referans linkine sahip olabilirsiniz;) Teşekkürler – 1myb

+0

http: //en.wikipedia.org/wiki/Hidden_Markov_model tersine döndüğünden dolayı özür dileriz, ancak temelde belirli bir bayt dizisinin olasılığı dile bağlıdır. İngilizce'de, "merhaba", "kodlama" gibi bir dilde nadiren oluşan bir diziden daha olası bir bayt dizisini temsil eder. Tek tek kelimeler için fark hafif olabilir, ancak bir deyiminiz varsa daha kesin bir sonuç elde edersiniz. – Arafangion

+0

Açıkçası, sadece Dogukan'ın cevabı ile giderdim. – Arafangion

İlgili konular