如何实现文本的自动化筛选截取?

问题遇到的现象和发生背景

发生在工作上的一个需求,我们需要对京东商品的标题名进行自动化截取,比如

联想拯救者Y7000P 2021新品酷睿i5高性能笔记本电脑 高色域165Hz电竞屏 设计本游戏本 i5-11400H丨RTX3050Ti 升配丨16G内存+512G固态 15.6英寸 黑色

我希望能够自动化智能截取为 联想 丨 拯救者Y7000P 2021 丨i5-11400H丨RTX3050Ti 丨16G内存丨512G固态丨15.6英寸 这样几个字段
每期的数据量不是很大,目前仅需截取笔记本电脑的字段。

我的解答思路和尝试过的方法

我尝试过使用re+正则表达式,但是京东的标题名规则太多太复杂。虽然不是要求实现100%的字段截取,但是最后截取的效率还是很低。或者是我的方法有问题?
我也思考过是不是使用一些文本模型进行分析,但是目前没有这个技术也没有头绪。

我想要得到帮助

有没有人能不能给我提供一些思路或者工具,我想自己尝试一下。如果能点拨一下能帮我少走很多弯路,感谢了。

你需要自行建立几个字典,用来进行拆分这些内容,比如品牌字典,特性字典等


import re
a = '_联想拯救者Y7000P 2021新品酷睿i5高性能笔记本电脑 高色域165Hz电竞屏 设计本游戏本 i5-11400H丨RTX3050Ti 升配丨16G内存+512G固态 15.6英寸 黑色'
brand = ['联想']
prop = ['内存','固态','英寸']

n = []

n += re.findall('|'.join(brand),a)
b = re.split('|'.join(n),a)
c = []

while len(b)>0:
    s = b.pop()
    n += re.findall('[\dGg\.]+'+'|[\dGg\.]+'.join(prop),s)
    c += re.split('|'.join(n),s)

b = []
while len(c)>0:
    s = c.pop()
    n += [n.strip() for n in re.findall('[^\|丨]+?[a-zA-Z0-9 \.-]+',s)]
print(n)

img

整体来说,最好是能有语义分析才好操作,虽然我也不懂,我为了政采信息提取中标企业及对应的金额就已经头疼死了