python-3.x - 根据文本中的单词位置从字符串中过滤特定单词
问题描述
我有几个词性规则,只有当正在查看的文本与规则匹配时才会触发它们。但是我很好奇是否有办法删除出现在短语之间的“任何”单词,否则会触发规则。我尝试使用停用词,但它会将文本过多地剥离到规则变得毫无意义的地方。这是一个例子。
Text: I want to attack this player's base.
attack_rule = [
('nn', 'i'),
('vbp', 'want'),
('to', 'to'),
('vb', ('exterminate', 'waste', 'attack', 'shoot'))
]
文本将触发此规则,但是如果文本是这样写的:
Text2: I f***ing want to attack this player's base.
Text2: I want to f***ing attack this player's base.
规则不会触发。所以我想知道是否有办法从文本中过滤脏话/填充物,否则会触发规则?最好按位置。
我目前正在使用 nltk 的 POS 标记器。如果有一种方法可以确保该单词不会对句子产生上下文影响(如最高级),这似乎更难。或者,如果某个单词出现在会触发规则的文本之间,则只需删除它即可。
我尝试使用停用词,但就像我说的那样过滤太多,尤其是当句子的对象是最重要的部分之一时。
He will attack all of them <- Stop words present
he attack <- Filtered stop words
解决方案
您检查句子中标记的 POS 是否与您的模式匹配的逻辑是什么样的?感觉就像您可以一直忽略一定数量的带有标签的单词,直到句子末尾才匹配,并且如果您最终找到了所有带有标签的单词(以正确的顺序),则可以进行匹配。您还可以在一行中强制使用最大数量的带有错误标签的连续单词。
你也可以忽略只有几种标签的词,比如副词或形容词
推荐阅读
- python - 如何使对象平滑移动tkinter
- python - tqdm的总参数有什么作用?
- ssh - SSH 进程实际在哪里处理?(本地或服务器上)
- android - Oreo textview 自动多行异常
- node.js - 如何让我的 React 应用程序在生产中指向我的 Node/Express API。代理仅适用于开发。
- javascript - Javascript 函数中的多个 OR 条件
- javascript - 能够通过 Postman 创建帐户,从 React 创建问题
- nltk - 斯坦福依赖解析器(3.9.1)的标签含义是什么?
- python - 熊猫,索引是一个元组(名称,日期),按日期范围排序?
- localization - 本地化后立即更新所有具有文本的元素