gpt4 book ai didi

machine-learning - 如何根据名称预测项目的类别?

转载 作者:行者123 更新时间:2023-11-30 08:46:32 26 4
gpt4 key购买 nike

目前我有一个包含大约 600,000 条记录的数据库,代表商品,其类别信息如下所示:

{'title': 'Canon camera', 'category': 'Camera'},
{'title': 'Panasonic regrigerator', 'category': 'Refrigerator'},
{'title': 'Logo', 'category': 'Toys'},
....

但有些商品没有类别信息。

{'title': 'Iphone6', 'category': ''},

所以我在想是否可以使用 scikit-learn 根据我的项目名称来训练文本分类器帮助我预测商品应该属于哪个类别。我正在将这个问题形成为多类文本分类,但每个项目也有一个~很多图片,所以也许 deep learning/Keras还可以用吗?

我不知道解决这个问题的最佳方法是什么,所以欢迎任何建议或建议,感谢您阅读本文。

附注实际文本是日语

最佳答案

您可以构建 2 字符/3 字符模型并计算值,例如3 克“pho”出现在“相机”类别中的频率。

trigrams = {}
for record in records: # only the ones with categories
title = record['title']
cat = record['category']
for trigram in zip(title, title[1:], title[2:])
if trigram not in trigrams:
trigrams[trigram] = {}
for category in categories:
trigrams[trigram] = 0
trigrams[trigram][cat] += 1

现在您可以使用标题三元组来计算分数:

scores = []
for trigram in zip(title, title[1:], title[2:]):
score = []
for cat in categories:
score.append(trigrams[trigram][cat])
# Normalize
sum_ = float(sum(score))
score = [s / sum_ for s in score]
scores.append(score)

现在分数包含每个三元组的概率分布:P(类|三元组)。它没有考虑到某些类只是更常见(之前,请参阅贝叶斯定理)。我目前也不太确定你是否应该采取一些措施来解决某些标题可能非常长并因此有很多卦的问题。我想先验已经做到了这一点。

如果发现您缺少许多三元组,您可以切换到二元组。或者简单地进行拉普拉斯平滑。

编辑:我刚刚看到文本是日语的。我认为 n-gram 方法在那里可能没用。你可以翻译一下名字。然而,从其他来源获取此信息可能更容易(例如维基百科/亚马逊/ebay?)

关于machine-learning - 如何根据名称预测项目的类别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42648465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com