从免费文本产品描述中提取产品类型



我希望从自由文本产品描述中提取产品类型,以便进行分组。

背景是从一个古老的Kaggel竞争中学习(mercari价格建议挑战(。

Google/Stack Overflow提供了多个方向,但没有具体的开箱即用的代码(我能找到(。

我能想到的最好的方法(我是NLP新手(是通过spacy包,解析产品名称描述,并将ROOT单词作为产品类型本身,请参阅下面的代码

该解决方案有时似乎提供了公平的结果,请参阅下面的结果示例,但我认为对于现成的代码应该有更好的做法。

import spacy
nlp = spacy.load('en_core_web_sm')
z = train_data
z = z.assign(product_enitity=z['name'].apply(nlp))
z = z.assign(product_enitity_parse=[([(X, X.dep_) for X in Y]) for Y in z['product_enitity']])
def get_root_word(sent):
return [tok[0] for tok in sent if (tok[1] == "ROOT") ]
z = z.assign(root_product_name=[get_root_word(sent) for sent in z['product_enitity_parse']])
root_product_name
名称product_enitity_parse
Air Jordan Retro 6运动蓝[(Air,复合色(,(Jordan,复合色
Salvatore Ferragamo皮带免费送货[(Salvatore,amod(,(Ferragamo,compound(,(Belt,npadvmod(,[FREE,amod],(SHIPPING,ROOT(]
树莓切罗基磨砂上衣和裤子[(树莓,复合物(,(切罗基,复合物
Uggs size 7[(Uggs,compound(,(size,ROOT(,(7,nummod(]
精油扩散器[(Essential,amod(,(Oil,compound(,(扩散器,ROOT(]
Skylanders[(Skylanders,ROOT(]
Sono人类接发20英寸[(Sono,nmod(,(human,amod(,[头发,nsubj(,(接发,ROOT(,(20,nummod(,(英寸,npadvmod(]
NWT LulaRoe Girls Mae连衣裙4码[(NWT,复合(,(LulaRoe,复合(
ES胸罩和内裤套装4(36B([(ES,compound(,(Bra,nmod(,(and,cc(,(Panty,conj(,(set,ROOT(,(of,prep(
Free Shipping Skeleton Kids Top

确定产品类型是一个分类,而不是提取任务。如果产品标题是";任天堂Switch红蓝新盒装";类别可以是";电子游戏";。

在您的数据集中;类别名称"菲尔德,那是你的标签。您应该考虑在spaCy中使用textcat模型,参见示例项目。

相关内容

  • 没有找到相关文章

最新更新