我最近一直在做一个程序,我想添加一个功能,它将在用户语音中,如“显示我的日程表从未来五(或5)天”或类似的东西,然后提取数字“五或五”作为一个数字,并使用它在代码的不同部分,以请求数据从谷歌日历,谷歌部分已基本完成,但我如何让它提取数字,如“五”或字母为基础的数字,我之前发现这段代码是在我环顾四周时发现的,它只返回true或false,我不知道如何让它返回实际的数字,您的帮助将不胜感激!
import nltk
text = "Is there a one two three in there?"
def existence_of_numeric_data(text):
text=nltk.word_tokenize(text)
pos = nltk.pos_tag(text)
count = 0
for i in range(len(pos)):
word , pos_tag = pos[i]
if pos_tag == 'CD':
return True
return False
print(existence_of_numeric_data(text))
有没有办法让它以整数格式释放数字?举个例子
字符串表示“显示我未来五天的日程表”,它将返回数字"5“作为一个单独的int
发布于 2020-06-19 15:55:44
如果您的文本类似于“包含1 2 3”,则可以简单地执行以下操作:
for word in text.split():
if word.isdigit():
num = int(word)
应该能行得通。但对于像“包含一、二、三”这样的文本,你可以制作一本包含以下单词的字典:
dt = ["one": 1, "two": 2, "three": 3, "four": 4, "five": 5]
然后简单地搜索该列表中给定文本中的每个单词:
for words in dt:
for w in text.split():
if w == words:
num == dt[words]
但是,只有当你的单词数量有限时,才能使用这种方法。例如,如果文本包含20个,而您的字典没有20个,那么它将无法工作。
发布于 2020-06-19 19:54:01
我找到了一个叫做word2number (使用pip安装)的插件,它做得很好,这就是你使用它的方式。
from word2number import w2n
text = "There are five days in a week"
print(w2n.word2number(text))
output>>
5
https://stackoverflow.com/questions/62465465
复制相似问题