我们假设我们有:
[('The', 'DET'),
('red', 'ADJ'),
('window', 'NOUN'),
('is', 'VERB'),
('closed', 'VERB'),
('.', 'PUNCT')]
这是一个元组列表,使得它们的第一个元素是一个句子的单词(在这种情况下,“红色窗口关闭。”),第二个元素是语法类别(或标记)。
假设我们有以下规则:
1。)
[('ADJ', 'NOUN'), ('NOUN', 'ADJ')]
这说明如果我们有一个ADJ后面紧跟一个NOUN(在这个例子中,'red'和'window'),我们应该对它们重新排序,以便NOJ立即跟随ADJ。 将规则1应用于句子的结果将是:
[('The', 'DET'),
('window', 'NOUN'),
('red', 'ADJ'),
('is', 'VERB'),
('closed', 'VERB'),
('.', 'PUNCT')]
任何人都知道如何为任何其他规则和句子自动化这个? 或者甚至只是一些基本策略会有所帮助。
任何帮助都将不胜感激。
答案 0 :(得分:0)
以下是我提出的建议:
步骤1:设置变量(这里提到的规则可以简化)
sentence = [('The', 'DET'), ('red', 'ADJ'), ('window', 'NOUN'), ('is', 'VERB'), ('closed', 'VERB'), ('.', 'PUNCT')]
rule = [('ADJ', 'NOUN')]
第2步:迭代句子中的项目
for index in range(0, len(sentence)):
第3步:从元组中获取特定信息
current = sentence[index][1]
next = sentence[index+1][1]
第4步:比较
if current == rule[0][0] and next == rule[0][1]:
print("Here we go, swapping!")
当然,这种实现是不完整的,因为我自己写完整件事没有意义。 几点说明:
请记住处理索引+ 1越界
切换2个项目可能会导致链接开关 - 比如顺序为ADJ,NOUN,NOUN,这将导致NOUN,ADJ,NOUN在第一次迭代中,NOUN,NOUN,ADJ在第二次
复杂的规则可能会破坏采用自动行为的想法