我的代码如下:
import nltk
exampleArray = ['The dog barking']
def processLanguage():
for item in exampleArray:
tokenized = nltk.word_tokenize(item)
tagged = nltk.pos_tag(tokenized)
print(tagged)
processLanguage()
上面代码的输出是带有相应词性的标记化单词。例如:
[('The', 'DT'), ('dog', 'NN'), ('barking', 'NN'), ('.', '.')]
DT = determiner
NN = noun
文本应该是
The dog is barking
并且应该有
DT -> NN -> VBZ -> VBG
VBZ = verb, present tense, 3rd person singular
VBG = verb, present participle or gerund
我将如何使程序在句子中定位缺失单词的位置
这是直接向前语法检查。您至少需要一个标记器、一个注释词性标记(POS)的工具和一个解析器,最好是像早期解析器(https://en.wikipedia.org/wiki/Earley_parser)或其他东西,它能够在给定目标语言的短语结构语法(PSG)的情况下分析树结构。不管您选择的具体算法是什么,请始终记住,自然语言在chosmky层次结构中至少是弱上下文敏感的,所以请忘记有限状态自动机等。如果解析器不验证您的句子是否符合语法(在语言学术语中,它未经您的PSG许可),您可以使用树状结构来定位某些端子符号未使用或未正确使用的位置。你还需要做的另一件事是形态学和大小写标记,它允许检查动词和论据的一致性等方面的错误,以排除像“狗在吠”这样的句子。也许还可以看看LFG或HPSG实现,它们以更彻底的方式实现了这一点,因为它们在计算上更强大(上下文敏感工具,换句话说是线性有界图灵机)
相关问题 更多 >
编程相关推荐