You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改spaCy代码从产品名中提取1-2个连续名词生成产品分类

实现优先提取连续两个名词的代码修改方案

核心逻辑调整

原有代码仅匹配第一个单个名词,调整匹配优先级如下:

  1. 优先查找第一个出现的连续两个名词,匹配成功直接拼接作为分类标签
  2. 无连续两个名词时,匹配第一个出现的单个名词
  3. 无任何名词时标记为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 17:30:01