📜  自然语言处理 |动词形式更正

📅  最后修改于: 2022-05-13 01:54:51.922000             🧑  作者: Mango

自然语言处理 |动词形式更正

让我们通过一个例子来理解这一点:

  1. 我们的孩子训练够吗?
  2. 我们的孩子训练够吗?

动词“is”只能与单数名词一起使用。对于复数名词,我们使用“are”。这个问题在现实世界中很常见,我们可以通过创建动词校正映射来纠正这个错误,该映射取决于块中是否存在复数或单数名词。

代码 #1:定义动词校正映射

# singular to plural mapping
  
plural_verb_forms = {
        ('is', 'VBZ'): ('are', 'VBP'),
        ('was', 'VBD'): ('were', 'VBD')
        }
  
# plural to singular mapping
singular_verb_forms = {
        ('are', 'VBP'): ('is', 'VBZ'),
        ('were', 'VBD'): ('was', 'VBD')
        }

我们正在使用 first_chunk_index() 方法在块中搜索第一个标记词的位置。这个方法有一个参数“pred”,它接受一个(单词,标签)元组并返回 True 或 False。

代码 #2:first_chunk_index()

def first_chunk_index(chunk, pred, start = 0, step = 1):
      
    l = len(chunk)
    end = l if step > 0 else -1
      
    for i in range(start, end, step):
        if pred(chunk[i]):
            return i
          
    return None

如果 (word, tag) 参数中的标签以给定的标签前缀开头,则下面代码中的谓词函数将返回 True。否则,假的。

代码#3:

def tag_startswith(prefix):
    def f(wt):
        return wt[1].startswith(prefix)
    return f

代码#4:让我们更正动词形式

from transforms import correct_verbs
  
print ("Corrected verb forms : \n", 
       correct_verbs([('is', 'VBZ'), ('our', 'PRP$'), 
                      ('children', 'NNS'), ('learning', 'VBG')]))

输出 :

Corrected verb forms : 
[('are', 'VBP'), ('our', 'PRP$'), ('children', 'NNS'), ('learning',
'VBG')]