如何使用机器学习从不正确的文本中预测正确的文本?

数据挖掘 机器学习 Python 预测建模
2022-02-26 11:50:22

我有一个这样的数据框:

import pandas as pd

df = pd.DataFrame({'incorrect': ['jak', 'mya', 'kfka'], 
                   'correct': ['jack', 'maya', 'kafka']})


incorrect  correct
jak        jack
mya        maya
kfka       kafka

我想用 python 中的机器学习从不正确的值中预测正确的结果。我可以在这种情况下使用哪种型号?谢谢。

2个回答

您尝试执行的任务确实很难使用机器学习来完成,因为在如何从不正确的单词中产生正确的单词方面没有模式。您可以做的一件事是从互联网上填充不同名称的字典,然后按照此处提供的建议进行操作。

从您的示例中不清楚您打算如何准确地预测您是否只有成对的术语。
如果您假设您有所有可能的正确和错误对,那么您可以简单地将您的数据用作哈希表,其中每个错误术语都是正确术语的键。
否则,假设您拥有所有正确的术语,但您希望能够处理不正确术语的略微更改的版本。您可以定义一个相似性度量(函数)并使用它来找到最接近的不正确术语,以便为其返回正确的术语。
如果您没有所有正确的单词,那就有问题了。
您应该查找“法律”术语(或您的情况下的名称)的词汇表并将其用作您的字典。python 中有一些库可以为您做到这一点,但据我所知,这些库都基于常规字典,例如 LibreOffice 使用的那些(PyEnchant)就是一个例子。如果您正在查找名称字典,您或许应该尝试查找包含名称的特定数据集。

否则,您的数据应该采用不同的格式,其中将包含更多信息,例如上下文。

基于不正确单词“预测”正确单词的一种方法是为每个(正确和不正确)构建一个 LM(语言模型),并基于返回具有最大可能性的单词的概率,就像基本翻译模型一样。但这只有在你有很多文本(不是 unigrams)并且每个单词出现多次时才有意义,否则你真的没有办法构建 LM。