确定网站内容语言

时间:2013-03-07 07:31:16

标签: language-agnostic

对于我的一个应用程序,我需要通过获取内容来确定网站的语言。

我想知道您对制作语言确定脚​​本的看法。你会用哪种方法?哪种脚本语言?等

此刻我用PHP编写了一些代码中的代码;

  • 按内容语言元标记确定语言
  • 通过获取标题,描述,关键字来确定语言,并将这些单词列表再次比较,如英语,荷兰语,德语
  • 按html语言标记确定语言'
  • 通过获取所有页面内容(单独的单词到数组)来确定语言,并通过array_search(最高匹配语言数组是内容语言)将其与单词列表进行比较。
  • 按语言标题确定语言

我现在正在采取这些步骤来确定语言,也正是按此顺序。如果一种方法成功确定了语言,我就退出下一个函数。

这种方法有效,但并不总是那么准确。有人可以告诉我更多关于我可以检查的事情吗?也许是另一种检查语言的方法(我不想使用api)。

(最后我需要将这些语言设置为MySql数据库)。

期待听到一些建议!

提前致谢。

尼克

1 个答案:

答案 0 :(得分:0)

这将取决于你的文字是什么..

首先解析所有html并仅提取文本。

如果它很长,你可以通过只看停字来使用便宜的方法。获取每种语言的停用词列表,并确定其中有多少停用词。您可以在NLTK语料库(python)中获得一个很好的停用词列表,并利用一些好的函数来标记句子和单词。

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')

关于http://www.algorithm.co.il/blogs/programming/python/cheap-language-detection-nltk/

的更多解释

如果您想通过python + nltk,请不要忘记在安装后下载nltk语料库。

import nltk
nltk.download()