首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python中使用NLTK从文本字符串中提取数字

如何在Python中使用NLTK从文本字符串中提取数字
EN

Stack Overflow用户
提问于 2020-06-19 15:37:18
回答 2查看 1K关注 0票数 0

我最近一直在做一个程序,我想添加一个功能,它将在用户语音中,如“显示我的日程表从未来五(或5)天”或类似的东西,然后提取数字“五或五”作为一个数字,并使用它在代码的不同部分,以请求数据从谷歌日历,谷歌部分已基本完成,但我如何让它提取数字,如“五”或字母为基础的数字,我之前发现这段代码是在我环顾四周时发现的,它只返回true或false,我不知道如何让它返回实际的数字,您的帮助将不胜感激!

代码语言:javascript
运行
复制
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

EN

回答 2

Stack Overflow用户

发布于 2020-06-19 15:55:44

如果您的文本类似于“包含1 2 3”,则可以简单地执行以下操作:

代码语言:javascript
运行
复制
for word in text.split():
    if word.isdigit():
        num = int(word)

应该能行得通。但对于像“包含一、二、三”这样的文本,你可以制作一本包含以下单词的字典:

代码语言:javascript
运行
复制
dt = ["one": 1, "two": 2, "three": 3, "four": 4, "five": 5]

然后简单地搜索该列表中给定文本中的每个单词:

代码语言:javascript
运行
复制
for words in dt:
    for w in text.split():
        if w == words:
            num == dt[words]

但是,只有当你的单词数量有限时,才能使用这种方法。例如,如果文本包含20个,而您的字典没有20个,那么它将无法工作。

票数 0
EN

Stack Overflow用户

发布于 2020-06-19 19:54:01

我找到了一个叫做word2number (使用pip安装)的插件,它做得很好,这就是你使用它的方式。

代码语言:javascript
运行
复制
from word2number import w2n

text = "There are five days in a week"

print(w2n.word2number(text))

output>>
5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62465465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档