我正在用C#编写一个自然语言处理器来提取句子的情感(正面/负面)。但是,有一个问题是能够辨别拼写错误的单词的情绪 - 如果它不在字典中,我既不能标记它也不能评价它!
我知道必须有办法解决这个问题。谷歌一直提供准确的建议,我只需要从类似的算法中获取最高建议并用它来点击数据库。问题是,我不知道从哪里开始算法名称等等。我需要帮助搞清楚。
我在网站上查看了类似的问题,并发现了一些似乎有用的概念,但处理拼写错误和真实单词之间距离的基本方法基本上依赖于点击数据集中的每个单词,这看起来非常糟糕效率低下。一些帮助想法使算法快速运行也将非常感激;这个分析引擎应该能够每天处理数千件物品。
提前致谢。
答案 0 :(得分:4)
这个问题不是那么愚蠢。 Norvig写了一篇关于它的article。一般来说,难度取决于准确性。 “最简单”的方法是使用前缀树或 trie 来避免探索所有可能性。 基本上你有这样的东西:
并沿着路径走,你基本上保持正轨。一旦到达卡住的位置,您应该根据您的错误类型检查如何继续前进。
您可以阅读Norvig的文章进行更深入的分析。
答案 1 :(得分:0)
dierre给出的方法 - 包括Peter Norvig的文章 - 当然值得进一步考虑。
但是,对于快速而肮脏的解决方案:如果在您自己的词典中找不到可能拼写错误的单词,您可以尝试在此list of common misspellings
中查找映射答案 2 :(得分:0)
如果您想要有效地计算拼写错误和大量字典单词之间的编辑距离,@ dierre提到的前缀树非常有用。 Brill和Moore(2000)描述了一种使用前缀树的方法,使用与Norvig和许多其他拼写检查器相同的一般方法。他们的论文可以在这里找到:http://www.ldc.upenn.edu/acl/P/P00/P00-1037.pdf