如何修改spaCy代码从产品名中提取1-2个连续名词生成产品分类
实现优先提取连续两个名词的代码修改方案
核心逻辑调整
原有代码仅匹配第一个单个名词,调整匹配优先级如下:
- 优先查找第一个出现的连续两个名词,匹配成功直接拼接作为分类标签
- 无连续两个名词时,匹配第一个出现的单个名词
- 无任何名词时标记为
NaN
修改后完整代码
!pip install -q --upgrade spacy import spacy import pandas as pd # 加载spacy模型 nlp = spacy.load('en_core_web_sm') category=[] for i in df['product_name'].tolist(): doc = nlp(i) found = False # 第一步:优先检索连续两个名词 for idx in range(len(doc)-1): if doc[idx].pos_ == 'NOUN' and doc[idx+1].pos_ == 'NOUN': category.append(f'{doc[idx]} {doc[idx+1]}') found = True break if found: continue # 第二步:无连续名词时检索单个名词 for t in doc: if t.pos_ == 'NOUN': category.append(f'{t}') found = True break # 第三步:无名词时标记NaN if not found: category.append('NaN') df1 = pd.DataFrame(category, columns =['product_category']) df1
输出验证
运行上述代码后,product_category列输出结果为:['knife', 'box set', 'jewellery set', 'NaN'],完全符合预期要求。
内容的提问来源于stack exchange,提问作者Oleg R
相关产品推荐
相关产品推荐

