2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家
问题
在不列颠哥伦比亚大学 CPSC330 应用机器学习课程的一项作业中,我们被要求对从Food.com 食谱样本中提取的标题进行分类。目标很简单:使用该网站 18 万多个食谱的一个子集,仅根据食谱标题来发现食谱的类别。然而,由于数据本质上是文本,建模过程中需要考虑诸多因素,因此实现这一目标才是真正具有挑战性的部分。
数据
从我们的食谱样本中,我们进一步提取了一个包含 9100 个单词的小型子集。我们通过删除重复条目、NaN 值、过短的名称(少于 5 个字符),并仅保留那些标签位于样本中前 300 个最常见标签之内的观测值来完成这一筛选。下面我们可以看到这些未经处理的标题数据示例,以及数据集中单词的可视化结果。
| 索引 | 食谱名称 |
|---|---|
| 42 | 我就是山药玛芬 |
| 101 | 健康玛芬 |
| 129 | 250000 巧克力豆曲奇 |
| 138 | 瑞士奶酪通心粉 |
| 163 | 加州卷沙拉 |
| ... | ... |
| 231430 | 西葫芦麦芽曲奇 |
| 231514 | 西葫芦蓝莓面包 |
| 231547 | 西葫芦莎莎汉堡 |
| 231596 | 托斯卡纳浓汤 |
| 231629 | 泽迪科沙拉 |
我们发现,在这个子样本中,最短的名称是“面包”,最长的名称是“帕尔马干酪脆皮烤番茄配香醋淋酱”。出现频率最高的词包括“鸡肉”和“蛋糕”等。你可以参考上方的词云可视化图,更直观地了解我们所处理的数据。
现在我们需要决定如何最好地将这些食谱名称表示为模型的特征。
文本表示
由于我们的目标是从一组单词出发,归纳出这些单词的合理类别,因此我们需要一种能够准确向模型表达这些文本的方法。在课堂上,我们学习到一种常用于文本探索性编码的标准方法,即使用 CountVectorizer 和词袋(Bag-of-words)编码来统计词频。
最简单的方法
使用 CountVectorizer 配合词袋编码是一种有意为之的浅层表示方法。我们并不捕捉单词的语义,而只记录其出现频率,并将这些信息传递给模型。这种方法虽然丢失了人类所能理解的词语含义所带来的所有细微差别,但同时提供了一组模型可以解读并从中建立联系的特征,尽管这种联系可能非常基础。根据我们在维基百科数据(即我们在 hw6 作业初期尝试模型时使用的玩具语料库)上的测试结果,词袋编码确实能为我们生成聚类,但这些聚类一开始并不显得特别合理。例如,该模型将“量子计算机”、“环境保护”、“可再生能源”和“气候变化”这几个查询合并到了同一个聚类中。
免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。
