【问题标题】:Regular expression tokenization with numbers?带有数字的正则表达式标记化?
【发布时间】:2019-08-30 20:11:49
【问题描述】:

我期待以下代码; 标记化

this is an example 123

进入

['this', 'is', 'an', 'example 123'] 

但它看不到单词的数字部分。有什么建议吗?

import re
from nltk.tokenize import RegexpTokenizer
pattern=re.compile(r"[\w\s\d]+")
tokenizer_number=RegexpTokenizer(pattern)
tokenizer_number.tokenize("this is an example 123")

【问题讨论】:

标签: python nlp nltk tokenize


【解决方案1】:

一个格式很好的正则表达式:

[\d.,]+|[A-Z][.A-Z]+\b\.*|\w+|\S

这个话题之前解决过:Here!

,您可以使用https://regex101.com交互测试正则表达式

【讨论】:

  • 此模式有效:pattern=r'[\w]+[\s]+[\d?]+[\w]|\w+\S'
【解决方案2】:

使用str.split()

s = "this is an example 123"    
print(s.split(" ", 3))

输出

['this', 'is', 'an', 'example 123']

【讨论】:

  • 这是硬编码的,只能解决那个例子;它在一般情况下根本不起作用
【解决方案3】:

你的正则表达式是错误的。您正在匹配任何字母、数字或空格序列。你的意思是:

pattern=re.compile(r"\w+\s\d+|\w+")

或者等效地,你可以写成r"\w+(?:\s\d+)?"

【讨论】:

    猜你喜欢
    • 2015-03-17
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    相关资源
    最近更新 更多