/ / Determinar o idioma do conteúdo do site - agnóstico do idioma

Determinar o idioma do conteúdo do site - agnóstico do idioma

Para um dos meus aplicativos, preciso determinar o idioma de um site, obtendo o conteúdo dele.

Eu gostaria de saber suas opiniões sobre como fazer um script determinar o idioma. Quais métodos você usaria? Qual linguagem de script? etc.

Neste momento eu escrevi alguns códigos em PHP com alguns métodos;

  • Determine a linguagem pela meta tag Content-Language
  • Determine o idioma obtendo título, descrição, palavras-chave e compare essas listas de palavras como inglês, holandês, alemão
  • Determinar idioma por tag de idioma html "
  • Determine o idioma obtendo todo o conteúdo da página (palavras separadas em array) e compare isso com as listas de palavras por array_search (o maior array de idiomas correspondente é o idioma do conteúdo).
  • Determinar idioma por cabeçalhos de idioma

Estes passos estou tomando agora para determinar a linguagem, também exatamente nesta seqüência. Se um método tiver sucesso para determinar o idioma, saí das próximas funções.

Este método está funcionando, mas nem sempre é tão preciso. Existe alguém que possa me dizer mais sobre as coisas que posso verificar? Talvez um buraco outra maneira de verificar o idioma (eu não quero usar api) s).

(no final eu preciso definir essas linguagens para um banco de dados MySql).

Ansioso para ouvir algumas sugestões!

Desde já, obrigado.

usuario

Respostas:

0 para resposta № 1

Isso dependerá do tempo que o seu texto for

Primeiro de tudo, analise tudo html e extraia apenas o texto.

Se for muito tempo você pode usar um método barato porolhando apenas para palavras irrelevantes. Obtenha uma lista de palavras irrelevantes para cada idioma e descubra quantas delas estão em seu texto. Você pode obter uma boa lista de stopwords no corpus NLTK (python) e aproveitar algumas boas funções para tokenize sentenças e palavras.

import nltk

ENGLISH_STOPWORDS = set(nltk.corpus.stopwords.words("english"))
NON_ENGLISH_STOPWORDS = set(nltk.corpus.stopwords.words()) - ENGLISH_STOPWORDS

STOPWORDS_DICT = {lang: set(nltk.corpus.stopwords.words(lang)) for lang in
nltk.corpus.stopwords.fileids()}

def get_language(text):
words = set(nltk.wordpunct_tokenize(text.lower()))
return max(((lang, len(words & stopwords)) for lang, stopwords in STOPWORDS_DICT.items()),
key = lambda x: x[1])[0]
lang = get_language("This is my test text")

Mais explicações sobre http://www.algorithm.co.il/blogs/programming/python/cheap-language-detection-nltk/

Se você quiser passar por python + nltk não se esqueça de baixar nltk corpus após a instalação.

import nltk
nltk.download()