自然语言处理的机器学习 - 自定义翻译

时间:2017-03-22 09:14:47

标签: python machine-learning nlp artificial-intelligence data-science

假设我有以下非常简化的培训和测试观察结果。

训练

input: her favourite dog was a huskey and her favourite cat was a leopard
output: dog=huskey, cat=leopard

input: her favourite dog was a beagle and her favourite cat was a lion
output: dog=beagle, cat=lion

input: her favourite dog was a poodle and her favourite cat was a burmese
output: dog=poodle, cat=burmese

测试

input: her favourite dog was a collie and her favourite cat was a moggie
desired output: dog=collie, cat=moggie
  • python中最好的机器学习方法是什么让我能够将测试输入转换为所需的输出?
  • 将此原始数据用于进行此预测涉及哪些步骤?

根据该领域的一些研究,似乎很多现有的机器学习包都围绕着分类,回归和聚类(例如http://scikit-learn.org/stable/),而我想要做的是一种翻译形式。 / p>

我还研究了一些NLP包,功能更多地涉及关键字识别,单词类型识别和情感分析(例如http://www.nltk.org/)。还有一些翻译包可用,但这些包适用于预先存在的语言(http://pythonhosted.org/goslate/

我认识到,对于这种特殊情况,机器学习是完全没必要的,但在实践中,将会有更复杂,不同和众多的输入需要翻译。

1 个答案:

答案 0 :(得分:0)

(1)我会重新解决你要解决的问题:给出句子中的一些特定的动物A >找到最好的动物 C类< / strong>即可。所以给出了句子1:

  

她最喜欢的狗是一只huskey,她最喜欢的猫是豹子

并且给予目标动物A =“huskey”,你会得到C =“dog”作为类;类似地,当A =“豹子”时,你会得到C =“cat”。

(2)从你问你的问题的方式来看,我假设你不想使用外部字典或其他数据(在那里找到C类与其相关动物物种的搭配是相对微不足道的。训练有监督的分类器)。所以我假设你只限于你提到的数据类型。我还假设在每个句子中都明确提到了C类。

(3)鉴于数据限制,您可能需要在功能中使用语法信息。在英语中,语法主要通过单词顺序传达,因此我将重点关注这些。将词性标注器应用于您的数据可能很有用。

(4)对于句子S中的每个可能的目标A,您将创建一行数据。因此,句子#1有两个目标A = {husky,leopard},因此训练数据中将有两行将映射到各自的类,狗和猫。

行已发送。目标F1,F2,...... FN等级

<1> 1哈士奇......狗

2 1豹......猫

(5)作为特征包含目标的POS ...在您提供的示例数据中可能没有用,对于更复杂的目标是有用的,例如,A =“大白哈士奇”应该映射完整的名词短语到C =“狗”。鉴于您的数据,上面的简单解决方案只会找到目标左侧最近的名词。

her.d favorite.a dog.n is.v a husky.n and her.d favorite.a cat.n is.v a leopard.n

所以你可以有一个功能F_LftClosestNoun,F_RtClosestNoun,F_ClosestNoun。然后,只需在训练数据上训练您的分类器,并在看不见的数据上进行测试。如果您提供更逼真的样本,我们可能会发现其他有用的功能。