【发布时间】:2010-12-19 00:55:57
【问题描述】:
如何使用 Python 从文章或用户帖子中挑选标签?
下面的方法可以吗?
从文本中构建词频列表并对其进行排序。
删除一些常用词,并选择列表中剩余的前 10 个词作为标签。
如果上面的方法没问题,有什么库可以检测哪些词是常见的,比如“the, if, you, etc”,哪些是描述词?
【问题讨论】:
如何使用 Python 从文章或用户帖子中挑选标签?
下面的方法可以吗?
从文本中构建词频列表并对其进行排序。
删除一些常用词,并选择列表中剩余的前 10 个词作为标签。
如果上面的方法没问题,有什么库可以检测哪些词是常见的,比如“the, if, you, etc”,哪些是描述词?
【问题讨论】:
Natural Language Toolkit 为这类东西提供了多种方法。由于我对这个主题不熟悉,所以我无法给你实际的建议,但我认为在开始之前先阅读一些关于这个主题的articles 是值得的:直接从文本中挑选单词就赢了我认为不会让你走得太远,你可能应该尝试找到与已经存在的标签相似的词。当然,您需要过滤掉语言中的常用词,例如“the”之类的。同样,这个 Python 库可以帮助您解决这个问题,至少对于一些常见的语言而言。
【讨论】:
用已经标记的数据训练贝叶斯或 Fischer 过滤器(例如,使用 sth 建议的 Stackoverflow 数据转储)并使用它对新帖子进行分类。我建议阅读 Toby Segaran 撰写的优秀的 Programming Collective Intelligence 书籍,以获取有关此主题的更多信息和 Python 示例。
【讨论】:
与其将不应该成为标签的词列入黑名单,不如建立一个可以成为好标签的词的白名单?
从您想要拥有的一些标签开始,例如Python、off-topic、football、rickroll 或诸如此类(取决于您正在构建的网站类型!)并拥有系统只在这些之间提出建议,然后让用户亲自挑选合适的标签,并让他们输入自己的标签。
当有足够多的用户推荐一个标签时,它会进入自动推荐的“已知良好”标签池——也许经过某种审核后,你仍然可以将愚蠢的标签列入黑名单,例如 the、lolol、或者当你有object-oriented时,像objectoriented这样的错字标签。
只显示一些建议。提供自动完成。限制每个项目的标签数量。如果这与编码有关,也许某种语言检测系统(file linux 命令在这方面并不算太简陋)将有助于您的建议系统。
【讨论】:
我建议你download the Stack Overflow data dump。那里有很多真实世界的帖子,带有适当的标签,以测试不同的标签选择算法。
但总的来说,我怀疑它是否会运作良好。对于您自己的问题,“words”是字数的明显赢家,然后是每个出现两次的单词列表,例如“common”、“list”、“method”、“pick”和“tags”。您会自动选择其中哪些作为标签?此外,您手动选择的标签包含“python”和“context”,它们都没有以高词频出现。
【讨论】:
这是一篇关于 removing stop words 的文章。文章中停用词列表的链接坏了但是here's another one。
【讨论】: