我希望从自由文本产品描述中提取产品类型,以便分组
背景是从老卡格尔竞赛(mercari价格建议挑战赛)中学习
Google/Stack Overflow提供了多个方向,但没有特定的开箱即用代码(我可以找到)
我能想出的最好办法(我是NLP新手)是通过spacy包,解析产品名称描述,并将根单词作为产品类型本身,请参见下面的代码
该解决方案有时似乎提供了公平的结果,请参见下面的结果示例,但我认为对于现成的代码应该有更好的实践
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']])
确定产品类型是一项分类任务,而不是提取任务。如果产品名称为“任天堂开关红蓝新收件箱”,则类别可能为“视频游戏”
在您的数据集中,似乎有一个“category\u name”字段,这是您的标签。您应该看看在spaCy中使用textcat模型,请参见example projects
相关问题 更多 >
编程相关推荐