通过模式进行文本分类

您能推荐我最好的方法吗?我有一系列短语,例如[“免费鲜花配送”,”莫斯科鲜花配送”,”颜色 + 家居配送”,”鲜花配送 + 配送”,”订购鲜花 + 带配送”,”颜色配送”],以及一个模式 – “鲜花配送”。我需要得到一个与模式尽可能接近的短语列表。

您能给一些建议吗?


回答:

简单方法

暴力搜索

有很多方法可以做到这一点,但最简单的方法是直接匹配:只需在输入短语中搜索字符串”鲜花配送”。这种方法相当二元,但您可以修改这种方法以使用二元语法或词袋模型。

词袋模型

词袋模型意味着我们解析短语和模式,并获得其中的词列表或集合,即[“鲜花”, “配送”]。您可以通过计算某种相似度指标来为每个短语评分(即,模式中的词集合是否出现在短语中),然后根据最接近的匹配对短语进行排名:

bag_pattern = set()for word in pattern:    set.add(word)for phrase in phrases:    score = 0    for word in phrase:        if word in bag_pattern:            score += 1    # 根据分数做一些事情

N元语法

我们可能希望考虑位置 – 即”鲜花配送”比”配送鲜花”更相关。我们可以计算短语和模式的N元语法(通常是二元语法或三元语法,即2或3个词的组合)。假设我们使用二元语法:

“鲜花配送莫斯科” -> [“鲜花配送”, “配送莫斯科”

然后您可以应用某种评分来决定这是一个多么好的匹配。

文本预处理

通常,您需要进行一些文本预处理。您可能希望在词袋模型中消除停用词(如”the”, “a”等),并且您可能希望将动词等标准化为其词根形式。

机器学习

好的,所以您的上司不喜欢简单有效的方法,规定您必须使用机器学习。这也行得通!

朴素贝叶斯

最简单的技术是查看词的概率,并将它们相乘。经典的例子是电子邮件的垃圾邮件检测。

方法是获取一批文本形式的电子邮件,并将它们分为两类 – 垃圾邮件和非垃圾邮件。然后,您浏览所有电子邮件,对于您看到的每个唯一词,您计算在垃圾邮件和非垃圾邮件中的出现次数。这给您提供了词出现在垃圾邮件中的概率。

假设您有一封包含以下内容的电子邮件:

“你好,我是一位尼日利亚王子。”

根据您之前计算的概率,您可以查找每个词的概率,将它们相乘,并得到电子邮件的得分,按词数进行归一化。”尼日利亚”和”王子”将具有不成比例的高概率出现在垃圾邮件中,因此这封电子邮件将得分很高!

深度学习

以下链接涵盖了使用深度学习技术的词袋模型和N元语法:

https://pytorch.org/tutorials/beginner/deep_learning_nlp_tutorial.html

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注