在Pandas中使用空格



我正在尝试使用space构建一个多类文本分类器,我已经构建了模型,但面临将其应用于我的完整数据集的问题。到目前为止,我建立的模型在屏幕截图中:

截图下面是我使用Pandas应用于完整数据集的代码:


Messages = pd.read_csv('Messages.csv', encoding='cp1252')

Messages['Body'] = Messages['Body'].astype(str)
Messages['NLP_Result'] = nlp(Messages['Body'])._.cats

但是它给了我错误:

ValueError: [E1041] Expected a string, Doc, or bytes as input, but got: <class 'pandas.core.series.Series'>

在这种情况下我想使用Pandas的原因是数据集有2列:ID和Body。我想将NLP模型仅应用于Body列,但我希望最终的数据集有3列:ID, Body和NLP结果,如上图所示。

Thanks so much

我也试过熊猫的应用方法,但没有运气。代码:

Messages['NLP_Result'] = Messages['Body'].apply(nlp)._.cats

我得到的错误:AttributeError: 'Series'对象没有属性'_'

期望生成如上所述的3列

您应该为Series.apply调用提供一个可调用对象:

Messages['NLP_Result'] = Messages['Body'].apply(lambda x: nlp(x)._.cats)

这里,NLP_Result列中的每个值都将赋值给x变量。

nlp(x)将创建一个包含您想要访问的必要属性的NLP对象。然后,nlp(x)._.cats将返回期望的值。

import spacy
import classy classification
import csv
import pandas as pd 
with open ('Deliveries.txt', 'r') as d:
Deliveries = d.read().splitlines()
with open ("Not Spam.txt", "r") as n:
Not_Spam = n.read().splitlines()
data = {}
data["Deliveries"] = Deliveries
data["Not_Spam"] = Not_Spam
# NLP model
nlp = spacy.blank("en")
nlp.add pipe("text_categorizer",
config={
"data": data,
"model": "sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2",
"device": "gpu"
}
)
Messages['NLP_Result'] = Messages['Body'].apply(lambda x: nlp(x)._.cats)

相关内容

  • 没有找到相关文章

最新更新