3 回答
TA贡献1797条经验 获得超6个赞
不太清楚您如何解决您的具体问题,但让我介绍几种解决文本相关问题的方法,因为这似乎是您感兴趣的。
0 级静态文本哈希
如果,这是一个很大的如果,您的输入是静态的,您可以将输入映射到输出的摘要。但是,正如您提到的,这很容易被破坏。即使多一个空格也会导致不匹配,这就是它的级别为 0 的原因。
1 级预处理您的输入:
删除单词之前、之后和之间的所有多余空格。
此步骤会将您的输入转换为:
Enjoy tea morning bread lunch. Enjoy taste garlic chicken dinner. day starts cold coffee. noon rice fish curry.
接下来,您可以删除动词词形变化,这不适用于您的示例,但我们假设您有一个类似以下的句子:
drink tea, drank juice and drinks soda.
这句话你就变成:
drink tea, drink juice drink soda
您可以更深入地进行同义词规范化,例如:
drink tea, sip water, slurped a juice, swallow beer
那么,他们都将变成:
drink tea, drink water, drink juice, drink beer
完成这些步骤后,您就拥有了一种处理文本的非统计方式。这一切都归结为消除任何冗余和语言的丰富性并注重字面意思。
当然,这种方法会失去英语中包含的大量价值。你不能讽刺,你不能进行类比。因此,这适用于某些领域,但并不是那么先进。这种方法更多的是文本处理而不是语言处理。看到不同?
如果您需要更智能的方法来解决此问题,您应该研究全文搜索算法
2 级全文搜索算法
有多种方法可以做到这一点,这里是一种。你有这样一句话:
I want pizza
这个搜索词将变成
want piz za
并且会寻找
want piz piz za want za
这是非常基本的东西,它只是向您展示原始文本处理的工作原理以及实现此目的的方法。也许你可以让你的输入通过级别 1 进行处理,使它们更简单、变量更少,然后让它们通过级别 2 进行处理,以便在数据库中建立索引,然后你就有了一个很好的方法来查询它们
NLP 3 级 - 自然语言处理
这仍然不是机器学习,但它更智能,并且建立在所有其他步骤之上。基本上,您会清除输入的无意义内容,并尝试对其应用英语语法结构。
4级深度学习的东西
基本上,谷歌。你会得到一堆文本、一堆搜索查询、一堆将查询映射到文本的用户跟踪数据。您将所有这些输入到神经网络中,统计模型将为您检测模式并让您的搜索变得更好。
概括
如果这是一个认真的项目,请研究 NLU。当您跟踪使用情况时,它会给您一个不错的结果。然后,当您拥有足够的用户数据时,就可以进行深度学习。没有简单的方法可以解决这个问题,您要么手动执行此操作,要么实现具有其中一些功能的数据库,例如elasticsearch。但正如其中提到的评论之一,php 不是一种用于此目的的语言。
TA贡献1827条经验 获得超9个赞
如果您的输入确实已知,那么您可以使用str_replace()例如
$input = 'Enjoy your tea in the morning then have some bread in the lunch. Enjoy the taste of a garlic chicken in the dinner.
Your day starts with cold coffee. In the noon have some rice and fish curry.';
$old = array('Enjoy your ', ' then have ', '. Enjoy the taste of a ', 'Your day starts with ', '. In the noon have ');
$new = array('Have ' , '. Have ' , '. Enjoy ' , 'Have ' , '. Have ' );
$output = str_replace($old, $new, $input);
请注意区分大小写以及空格、句点和其他标点符号。
如果您的输入不太为人所知,那么您可以像您猜测的那样使用正则表达式。
- 3 回答
- 0 关注
- 140 浏览
添加回答
举报