如何使用正则表达式生成哑变量?以reviews列拼写变体提取为例
解决拼写变体的哑变量生成问题
没问题,这事儿很容易搞定!你之前用str.contains('good')其实只是用了固定字符串匹配,但str.contains()本身就支持正则表达式——默认参数regex=True就是干这个的,刚好能用来匹配good的各种拼写变体。
具体实现步骤
构造正则表达式:针对你提到的
good、goid、goof,可以用字符类来简化匹配规则,精准覆盖这些拼写错误:go[oi][df]:表示匹配以go开头,第三个字符是o或i,第四个字符是d或f的字符串,完美命中你列出的三个变体。- 如果要匹配独立单词(避免误匹配
goodness这类包含目标词的长单词),可以加上单词边界\b,变成r'\bgo[oi][df]\b'。
编写代码生成哑变量:
# 生成名为good_variant的哑变量列 df['good_variant'] = df['reviews'].str.contains( r'\bgo[oi][df]\b', # 正则匹配模式 case=False, # 忽略大小写,可选,根据你的需求调整 regex=True # 明确启用正则匹配(默认就是True,写出来更清晰) ).astype(int)
扩展说明
如果之后需要匹配更多拼写变体(比如gud、goood这类),可以轻松扩展正则规则:
- 匹配多个
o:用g[o]+[i]?d(允许1个或多个o,可选中间的i) - 匹配更多字母替换:用
g[ou][oi][df](把o的常见替换u也加入匹配范围)
这样就能灵活应对各种拼写错误的情况啦!
内容的提问来源于stack exchange,提问作者Said Tahmazov
相关产品推荐
相关产品推荐

