python - 如何使用 Python NLTK 将字符串中的数字转换为单词?

标签 python nlp nltk tokenize

我正在尝试编写一个函数,该函数将:

  • 将字符串作为输入
  • 检查其中是否有数字
  • 将数字转换为单词

例如,“Hello 5, 123”将转换为“Hello 5, 123”。

我的代码是: 从 nltk.corpus 导入停用词 从 nltk.tokenize 导入 word_tokenize 从 num2words 导入 num2words

def conv_mytext(text, **keyword_parameters):
    if('convert_digits' in keyword_parameters):
    word_tokens = word_tokenize(text)
    for w in word_tokens:
        if int(w):
            word_tokens[w] = num2words(w)
        else:
            continue
    return text

我收到此错误:

ValueError: invalid literal for int() with base 10: 'Hello'

我做错了什么?

最佳答案

这里的主要问题是 int() 不是一个谓词函数 - 你期望它像 isInt() 一样工作,当它实际上会尝试将您传递的值转换为 int。

“Hello”,序列中的第一个标记当然无法转换为 int,因此,调用 int("Hello") 会产生 ValueError,表明“Hello”可能不是一个以 10 为基数的数字。

您应该考虑其他方法来测试字符串是否类似于数字。最简单的方法是在 try/catch block 中执行该转换,这样您就可以识别 ValueError,并在发现字符串不是数字时安全地继续。

另一种方法是使用正则表达式来识别字符串是否类似于数字。正则表达式 ^\d+$ 适用于整数。如果字符串与该表达式匹配,则该字符串仅由数字组成,可以传递给 num2words

关于python - 如何使用 Python NLTK 将字符串中的数字转换为单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43443754/

相关文章:

Python:导入的 Tkinter 程序自行运行?

Java:如何集成其他软件

python-2.7 - NLTK - 如何使用 NER

python - 在numpy中的两个数组中查找一对元素的位置

支持 ssh-dss 公钥算法的 Python FTP 实用程序

python - 如何使用 NLTK 构建词性标注语料库?

nlp - 在潜在语义分析中,如何在截断奇异值后重新组合分解矩阵?

nlp - 从实体和词性标记文本中寻找原因/提取信息

Python、NLTK 无法导入 "parse_cfg"?

python - 如何为 pandas dataframe 创建的 Excel 工作表中的表格添加边框?