Jeśli jesteś zainteresowany mechanizmu, dzięki któremu wykrywanie języka może być wykonane, odsyłam do poniższego article (python based), który korzysta z (bardzo) metody naiwne, ale jest to dobry wstęp do tego problemu w szczególności i uczenie maszynowe (tylko wielkie słowo) w ogóle.
Dla implementacji java, JLangDetect i Nutch sugerowane przez inne plakaty są całkiem dobre. Zobacz także: Lingpipe, JTCL i NGramJ.
za problem gdzie masz wiele języków na tej samej stronie, można użyć detektora obwiedni zdanie posiekać stronę na zdania, a następnie próbować zidentyfikować języka każdym zdaniu. Zakładając, że zdanie zawiera tylko jeden (podstawowy) język, nadal powinieneś uzyskać dobre wyniki z dowolną z powyższych implementacji.
Uwaga: Detektor granicy zdań (SBD) jest teoretycznie specyficzny dla języka (problem jaj kurcząt, ponieważ potrzebny jest jeden dla drugiego). Jednak w przypadku języków opartych na alfabecie łacińskim (angielski, francuski, niemiecki itp.), Które przede wszystkim używają okresów (oprócz wykrzykników itp.) Do odgraniczania zdań, uzyskasz akceptowalne wyniki, nawet jeśli używasz SBD zaprojektowanego dla języka angielskiego. Napisałem oparty na regułach angielski SBD, który sprawdził się bardzo dobrze w przypadku francuskiego tekstu. W przypadku implementacji spójrz na OpenNLP.
Alternatywnym rozwiązaniem do korzystania z SBD jest użycie okno przesuwne z powiedzmy 10 żetony (spacje ograniczona), aby utworzyć pseudo-zdanie (PS) i spróbować zidentyfikować granicę, gdzie zmiany językowe. Ma to tę wadę, że jeśli cały dokument zawiera n tokenów, wykonasz w przybliżeniu operacje klasyfikacyjne n-10 na łańcuchach o długości 10 tokenów każdy. W drugim podejściu, jeśli przeciętne zdanie ma 10 żetonów, wykonalibyśmy operacje klasyfikacyjne w przybliżeniu n/10. Jeśli n = 1000 słów w dokumencie, porównujesz 990 operacji ze 100 operacjami: kolejność różnicy wielkości.
Jeśli masz krótkie frazy (poniżej 20 znaków), dokładność wykrywania języka jest słaba z mojego doświadczenia. Szczególnie w przypadku rzeczowników właściwych, a także rzeczowników, które są takie same w różnych językach, takich jak "czekolada". Na przykład. Czy "New York" to angielskie słowo lub francuskie słowo, jeśli pojawia się we francuskim zdaniu?
@EugeneP: francuski byłby bardziej "Je suis un bel homme ...";), ale wykrywacz języka jest mało prawdopodobne, aby zauważyć ten błąd (lub co najmniej bardzo rzadkie wykorzystanie). – SyntaxT3rr0r
@WizardOfOdds Je suis un bonhomme alors, merci, quand meme;) – EugeneP
Ponadto, miej nadzieję, że już sprawdziłeś to: http://stackoverflow.com/questions/1383503/how-to-determine-the-natural-language-of- a-document –