【问题标题】:Determine website content language确定网站内容语言
【发布时间】:2013-03-07 07:31:16
【问题描述】:

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

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

此时我用几个方法用PHP写了一些代码;

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

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

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

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

期待听到一些建议!

提前致谢。

尼克

【问题讨论】:

    标签: language-agnostic


    【解决方案1】:

    这将取决于你的文字是多久..

    首先解析所有的html,只提取文本。

    如果它很长,您可以通过只查看停用词来使用一种廉价的方法。获取每种语言的停用词列表,并找出其中有多少出现在您的文本中。您可以在 NLTK corpus(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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多