2009-07-22 2 views
9

URL을 사용하여 웹 사이트 페이지에서 사용하는 자연어를 자동으로 결정하는 방법을 찾고 있습니다. 파이썬에서URL이 주어지면 웹 사이트 페이지의 자연 언어를 자동으로 결정합니다.

, 함수와 같은 : 언어 지정자를 반환

def LanguageUsed (url): 
    #stuff 

(영어 예를 들어 '엉'일본어 'JP'등) 결과의

요약 : code from the PyPi for oice.langdet을 사용하여 Python으로 작업하는 합리적인 해결책이 있습니다. 영어와 영어를 차별화하는 데 괜찮은 일을합니다. Python urllib을 사용하여 html을 가져와야합니다. 또한, oice.langdet은 GPL 라이센스입니다.

파이썬에서 Trigrams를 사용하는보다 일반적인 해결책은 다른 사람이 제안한 것처럼 Python Cookbook Recipe from ActiveState을 참조하십시오.

Google Natural Language Detection API는 매우 잘 작동합니다 (내가 본 것 중 가장 좋지 않은 경우). 그러나 자바 스크립트이며 TOS는 사용을 자동화하지 않습니다.

답변

8

이것은 일반적으로 문자 n-gram 모델을 사용하여 수행됩니다. here은 Java에 대한 최첨단 언어 식별자입니다. 파이썬으로 변환하는 데 도움이 필요하면 그냥 물어보십시오. 희망이 도움이됩니다.

1

nltk (페이지의 텍스트를 다루는 데 익숙해 져야하는 경우, 즉 헤더와 URL 자체가 사용자 목적에 맞게 언어를 충분히 결정하지 못하는 경우) 도움이 될 수 있습니다. 나는 NLTK가 직접 "이 텍스트가 어떤 언어인지 말해"기능을 제공하지 않는다고 생각하지만 (실제로 NLTK가 크고 지속적으로 커지기 때문에 사실상 가능할 수도 있지만), 가능한 다양한 방법에 따라 주어진 텍스트를 분석 할 수 있습니다. 각 언어에 대한 규칙에 따라 어떤 언어가 가장 합리적인 구문 분석, wordset, & c를 제공하는지 확인합니다.

0

URL에서만 사용할 수있는 일반적인 방법은 없습니다. top-level domain을 확인하여 몇 가지 아이디어를 얻고 URL을 나타내는 부분 (예 : 두 개의 슬래시 사이에 "en"또는 "es"와 같은 부분)이 있는지 확인하고 영어로 알려지지 않은 것을 가정합니다. 그러나 ' 완벽한 솔루션입니다.

내가 아는 한, 페이지에서 사용하는 자연어를 결정하는 유일한 방법은 페이지의 텍스트를 가져 와서 각 언어의 특정 공통 단어를 확인하는 것입니다. 예를 들어 "a", "an"및 "the"가 페이지에 여러 번 나타나는 경우 영어 텍스트가 포함될 가능성이 높습니다. "el"과 "la"는 스페인어를 제안 할 수 있습니다. 등등.

3

없습니다를 참조하십시오.

하나의 옵션은 natural language toolkit을 사용하여 콘텐츠를 기반으로 언어를 식별하는 것이지만 NLP 부분을 작동시킬 수는 있지만 상당히 느립니다. 또한 신뢰할 수 없습니다. 대부분의 사용자 에이전트는 각 요청마다

Accept-Language: en-US 

과 같이 전달하며 많은 대형 웹 사이트는 해당 헤더를 기반으로 다른 콘텐츠를 제공합니다. 더 작은 사이트는 언어 헤더에주의를 기울이지 않으므로보다 안정적입니다.

GeoIP을 사용하는 언어에 대한 프록시로 서버 위치 (즉, 서버가있는 국가)를 사용할 수도 있습니다.분명히 완벽하지는 않지만 TLD를 사용하는 것보다 훨씬 낫습니다.

+0

위치 정보가 완전히 쓸모가 ... 궁금합니다. 세계는 여러 언어가 공존하는 곳이 많습니다. 그리고 웹 사이트는 다국어를 특징으로 할 수도 있습니다. –

+0

내가 말했던 것은 그것이 어떤 사람들이 제안하는 TLD보다 낫다는 것이었고 여러 언어 문제를 다루었습니다. – tghw

3

ngram 기반 탐지를 시도 할 수 있습니다.

TextCat DEMO (LGPL)은 거의 잘 작동합니다 (거의 70 개 언어 인식). 같은 코퍼스를 사용하는 파이썬 포트가 Thomas Manginhere입니다.

편집 : TextCat competitors page도 흥미로운 링크를 제공합니다.

Edit2가이 : http://www.mnogosearch.org/guesser/에 대한 파이썬 래퍼를 만드는 것은 어려울 수 있을지

관련 문제