《》。)#)) )、 2021-12-03 09:26 采纳率: 100%
浏览 43
已结题

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

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

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

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

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

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

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

我想要得到帮助

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

  • 写回答

1条回答 默认 最新

  • CSDN专家-文盲老顾 2021-12-03 09:49
    关注

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

    
    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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月11日
  • 已采纳回答 12月3日
  • 修改了问题 12月3日
  • 创建了问题 12月3日