我有一个输出短语列表的算法(我无法更改)。这些短语旨在成为“主题”。但是,其中一些本身毫无意义。拿这个清单:
is the fear
freesat
are more likely to
first sight
an hour of
sue apple
depression and
itunes
如何过滤掉那些本身没有意义的短语,留下如下列表?
freesat
first sight
sue apple
itunes
这将适用于多种语言的短语集,但英语是优先事项。
我有一个输出短语列表的算法(我无法更改)。这些短语旨在成为“主题”。但是,其中一些本身毫无意义。拿这个清单:
is the fear
freesat
are more likely to
first sight
an hour of
sue apple
depression and
itunes
如何过滤掉那些本身没有意义的短语,留下如下列表?
freesat
first sight
sue apple
itunes
这将适用于多种语言的短语集,但英语是优先事项。
它必须在语法上是可以接受的,因为它不能依赖于从中提取的原始句子中的其他单词;例如它不能以'and'结尾。
尽管这仍然是一个未充分说明的问题,但听起来您需要某种语法检查器。我建议您尝试将词性标记器应用于每个短语,编译可接受的 POS 标记模式列表(例如,以介词结尾的任何内容都是不可接受的)并使用它来过滤您的输入。
在高层次上,似乎只有名词或形容词-名词组合的短语会产生更好的结果。
例子:
首先,这个问题可以像您希望的那样复杂。对于第三方阅读/解决方案,我遇到了:
如果您需要 100% 的准确率,那么我自己不会编写这样的工具。
但是,如果问题域是有限的......
我会先扔掉连词、介词、缩略词、状态动词等。这是一个相当短的英语列表(看起来与@HappyTimeGopher 建议的停用词非常相似)。
之后,您可以创建所有可接受的名词和形容词的字典(当然,作为索引结构),并将原始短语中的每个单词与之进行比较。任何未出现在字典中并以正确顺序出现的内容都可能被丢弃或排名较低。
如果您有 100 个输入值并希望选择最好的 5 个,这可能很有用。在字典中查找值意味着该词/短语很可能是好的。
我之前通过从与垂直行业相关的数千个文档中构建原始索引来自动生成这样的字典。然后,我花了几个小时使用 SQL 和 Excel 去除人类容易发现的问题。结果列表并不完美,但它消除了大部分明显愚蠢/毫无意义的术语。
正如您可能已经猜到的那样,这些都不是万无一失的,尽管检查形容词到名词的顺序会有所帮助。考虑“Greatest Hits”与“Car Hits [Wall]”的情况。
专有名词(例如人名)不适用于字典方法,因为建立一个包含所有给定/姓氏变体的字典可能是不可行的。
总结一下:
如果您可以访问生成这些短语的文本,则创建自己的主题标签可能会更容易。
如果做不到这一点,我可能会删除任何包含停用词的内容。请参阅此列表,例如: http ://www.ranks.nl/resources/stopwords.html
我不会为此打破 POS 标签或任何更强大的东西。
您似乎可以创建一个过滤掉三件事的列表:
如果你过滤这些东西,你会走得很远。你更关心假阴性还是阳性?如果误报不是一个大问题,这就是我的处理方式。