【发布时间】:2021-03-17 00:02:48
【问题描述】:
我正在尝试在 python 中制作一个与内联标签一起使用的自定义标记器。目标是接受这样的字符串输入:
'This is *tag1* a test *tag2*.'
并让它输出一个由标签和字符分隔的列表:
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', '*tag1*', ' ', 'a', ' ', 't', 'e', 's', 't', ' ', '*tag2*', '.']
没有标签,我只会使用list(),我想我找到了一个解决方案来处理单个标签类型,但有多个。还有其他多字符段,例如椭圆,应该被编码为单个特征。
我尝试的一件事是用正则表达式用一个未使用的字符替换标签,然后在字符串上使用list():
text = 'This is *tag1* a test *tag2*.'
tidx = re.match(r'\*.*?\*', text)
text = re.sub(r'\*.*?\*', r'#', text)
text = list(text)
然后我将对其进行迭代并用提取的标签替换“#”,但我有多个不同的特征要尝试提取,并且在拆分字符串之前使用不同的占位符字符多次重复该过程似乎是不好的做法.有没有更简单的方法来做这样的事情?我对此还是很陌生,所以还有很多我不知道的常用方法。我想我也可以使用一个更大的正则表达式,它包含我试图提取的所有特征,但它仍然感觉很hacky,我更喜欢使用更模块化的东西,可以用来查找其他特征而无需编写新的表达式每次。
【问题讨论】:
-
看看词法扫描器,为你的文本编写一个语法,它会为你解析它,或者编写你自己的状态机
标签: python regex nlp data-cleaning