【发布时间】:2011-03-23 13:41:03
【问题描述】:
我正在构建一个涉及自然语言处理的项目,因为 nlp 模块目前只处理英文文本,所以我必须确保用户提交的内容(不长,只有几个单词)是英文的。是否有既定的方法来实现这一目标?首选 Python 或 Javascript 方式。
【问题讨论】:
标签: javascript python nlp
我正在构建一个涉及自然语言处理的项目,因为 nlp 模块目前只处理英文文本,所以我必须确保用户提交的内容(不长,只有几个单词)是英文的。是否有既定的方法来实现这一目标?首选 Python 或 Javascript 方式。
【问题讨论】:
标签: javascript python nlp
如果内容足够长,我会在字母上建议一些frequency analysis。
但是对于一些单词,我认为最好的办法是将它们与英语词典进行比较,如果其中一半匹配,则接受输入。
【讨论】:
【讨论】:
我认为最有效的方法是要求用户只提交英文文本:)
您可以在文本区域上显示语言选择下拉菜单,并选择英语/其他作为选项。当用户选择“其他”时,禁用文本区域并显示[目前]仅支持英语的消息。
【讨论】:
Google 有一个实施语言检测的 JavaScript API。我只用它进行过测试,从未在生产中使用过。
http://code.google.com/apis/ajaxlanguage/documentation/#Detect
【讨论】:
尝试基于 n-gram 的统计语言识别。这是使用此技术的算法演示的link,还有一个链接到描述该算法的论文。试试这个演示,即使是非常短的文本(3-4 个字),它也表现得很好。
【讨论】:
你已经在做 NLP,如果你的模块不理解文本是什么语言,那么要么模块不工作,要么输入的语言不正确。
【讨论】:
试试:
http://wordlist.sourceforge.net/
获取英文单词列表。
您需要注意名称,例如“堪培拉”或“比尔·克林顿”。这些不会出现在单词列表中。我建议只检查第一个字母是否大写作为第一次尝试。
【讨论】:
您可以将短语分解成单词并查看字典(有些可以下载,this 可能会感兴趣),但这需要您使用的字典足够好。
它也会被专有名词取代(例如,我的名字不在字典中)。
【讨论】:
Dictionary Switcher Firefox 扩展有一个选项可以在我键入时检测正确的字典。
我猜它会根据已安装的字典检查单词,并选择错误较少的单词...
您不能指望文本中的所有单词都会出现在字典中:缩写词、专有名词、错别字……此外,有些单词在多种语言中是通用的:一个法国摇滚乐队甚至将其磁盘的标题设为在法语和英语中都有(不同的)含义。所以这是一个统计问题:如果在一本好的英语词典中找到超过 x% 的单词,则用户很有可能使用这种语言输入(即使有错误,比如可能在这个答案中,因为我不是英语母语) .
【讨论】:
也许“Ensuring that the user submits only English text [PHP]”文章会对您有所帮助。代码是用 PHP 编写的,但足够小,可以很容易地重写。
【讨论】: