从文本中确定人类语言::系统结构
determination of human language from text:: system structure
我正在使用 these word lists。
现在我只想到德语、俄语、英语和法语。
我想我要做的是将它们全部作为散列图的一部分,每种语言一个,以单词作为键,以布尔值作为值。
当我收到输入文本时,我将搜索所有列表,并返回匹配次数最多的答案。
也许我会尝试使用多线程并使用不同的线程同时搜索每个词典。
这是解决这个问题的好方法吗?
这可以作为第一个近似值。
但是,用于语言检测的固定单词列表的问题是真实文本(尤其是短文本)可能无法在您的列表中提供足够的命中率。一种更可靠的方法是收集其他语言特征的一部分(例如反映形态学和正字法的字母 n-gram 的统计数据),而不仅仅是完整的单词。
此外,对于某些文本,您可能会得到意想不到的结果。考虑以下短语:
Schwarzenegger in Kindergarten Cop.
对于任何reader,很明显这里的语言是英语。但是什么告诉你呢?正是 "in" 使该短语成为明确无误的英语。因此,有些方法基于分配更高权重的短功能词。
因此,如果您认真对待您的项目,那么稍微研究一下该地区是个好主意。顺便说一句,为什么不使用现有的库之一进行语言检测?先尝试 this search。还有内存方面的考虑(word lists/hash 映射可能会变得相当大)。但作为一个可行的快速解决方案。
不太可能。在 HashMap
中存储那么多数据会消耗大量 RAM。当您添加对其他语言的支持时,问题只会增加。您需要将单词列表保存在磁盘上。有很多方法可以解决这个问题。您可以对已排序的文本文件执行二进制搜索,每种语言一个。或者您可以将数据存储在数据库中,为文本列建立索引,然后让数据库引擎完成工作。您还可以使用许多数据库引擎中提供的全文搜索功能。并且可能有比这些更多(并且可能)更好的方法。但是,重点是将单词列表加载到内存中会导致内存问题。
我正在使用 these word lists。
现在我只想到德语、俄语、英语和法语。
我想我要做的是将它们全部作为散列图的一部分,每种语言一个,以单词作为键,以布尔值作为值。
当我收到输入文本时,我将搜索所有列表,并返回匹配次数最多的答案。
也许我会尝试使用多线程并使用不同的线程同时搜索每个词典。
这是解决这个问题的好方法吗?
这可以作为第一个近似值。
但是,用于语言检测的固定单词列表的问题是真实文本(尤其是短文本)可能无法在您的列表中提供足够的命中率。一种更可靠的方法是收集其他语言特征的一部分(例如反映形态学和正字法的字母 n-gram 的统计数据),而不仅仅是完整的单词。
此外,对于某些文本,您可能会得到意想不到的结果。考虑以下短语:
Schwarzenegger in Kindergarten Cop.
对于任何reader,很明显这里的语言是英语。但是什么告诉你呢?正是 "in" 使该短语成为明确无误的英语。因此,有些方法基于分配更高权重的短功能词。
因此,如果您认真对待您的项目,那么稍微研究一下该地区是个好主意。顺便说一句,为什么不使用现有的库之一进行语言检测?先尝试 this search。还有内存方面的考虑(word lists/hash 映射可能会变得相当大)。但作为一个可行的快速解决方案。
不太可能。在 HashMap
中存储那么多数据会消耗大量 RAM。当您添加对其他语言的支持时,问题只会增加。您需要将单词列表保存在磁盘上。有很多方法可以解决这个问题。您可以对已排序的文本文件执行二进制搜索,每种语言一个。或者您可以将数据存储在数据库中,为文本列建立索引,然后让数据库引擎完成工作。您还可以使用许多数据库引擎中提供的全文搜索功能。并且可能有比这些更多(并且可能)更好的方法。但是,重点是将单词列表加载到内存中会导致内存问题。