从元组列表中搜索索引

2024-05-15 02:55:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一句话:“你好,我的车号是H 11231,卡号是11122”。我标记了这个句子,然后用POS标记了这个标记化的句子。我想获取车号,我创建了一个循环来检查索引是否在一个数字,比如说(11231)。然后检查1元组之前或之后是否有标记NNP(表示1个字母)

import nltk

sentence = 'hi there, my car number is H 11231, and my card number is 11122'

tokenizedSent = nltk.word_tokenize(sentence)
tagged = nltk.pos_tag(tokenizedSent)
print(tagged)
output = []

print(tagged)
for i in tagged: 
    if i[1] == 'CD':
        output.append(i[0])
    elif i[1] == 'NNP':
        output.append(i[0])

这句话有两个数字,分别是11231和11122。然而,只有一个是车号,这是前一个被NNP标记的车号


Tags: 标记numberoutputismy数字sentence句子
1条回答
网友
1楼 · 发布于 2024-05-15 02:55:36

您的解决方案遍历标记集合,只接受CD和NNP标记

你只想要数字

所以首先要做的是:得到数字:

IndexTag = namedtuple('IndexTag', ['tag', 'index'])
numbers = []
for i, tag in enumerate(tagged):
    if tag[1] == 'number':
        numbers.append(IndexTag(tag, i))

现在您有了您的号码,您可以检查“previous tag is NNP”:

car_ids = []
for number in numbers:
    if number.index > 0 and tagged[number.index - 1][1] == 'NNP':
       car_ids.append(number)

相关问题 更多 >

    热门问题