使用tfidvectoriser时出现怪异的线条,可能是由替换为''?

我昨天在这里发布了有关制作文本线性回归模型以预测情绪的信息,我想知道的是在将文本小写,删除任何停用词/标点符号和数字之后,我在某些文本上留下了奇怪的线条功能。

     ['_______','__________','__________ pros','____________','____________ pros','_____________','_____________ pros','aa','aa waist','ab','abdomen','ability','able','able button','able buy',

我在想这可能是因为标点符号和数字用空格代替了吗?我仍然不确定。

另一个问题是如何针对线性回归正确地构造它?我应该用一列特征来代表每个句子并将其输入网络吗?但是如果矩阵稀疏,我将如何处理?

对不起,仅了解有关文本预处理的更多信息

这是我的清洁步骤:假设这样一句话:“这件可爱的铂金连衣裙是女性化的,非常合身,也易于穿着和舒适!强烈推荐!'

  1. 小写字母

    AllSentences ['Sentence'] = AllSentences ['Sentence']。map(lambda x:x.lower())

2。删除停用词

  stop = stopwords.words('english')
    AllSentences['Sentences_without_stopwords'] = AllSentences['Sentence'].apply(lambda x: ' '.join([word for word in x.split() if word not in (stop)]))

3。删除号码

AllSentences['Sentences_without_stopwords_punc'] = AllSentences['Sentences_without_stopwords'].apply(lambda x: re.sub(r'[^\w\s]','',x))
AllSentences['Sentences_without_stopwords_punc'] = AllSentences['Sentences_without_stopwords_punc'].apply(lambda x: re.sub(r'\d+',x))
  1. 测试/火车拆分,tfidvectorise

    X_train,X_test,y_train,y_test = train_test_split(X,Y,test_size=0.30,random_state=42)
    
       vect_word = TfidfVectorizer(max_features=20000,lowercase=True,analyzer='word',stop_words= 'english',ngram_range=(1,3),dtype=np.float32)
    
    tr_vect = vect_word.fit_transform(X_train)
    ts_vect = vect_word.transform(X_test)
    

这为我提供了以上功能名称的输出?

fls757126991 回答:使用tfidvectoriser时出现怪异的线条,可能是由替换为''?

我认为使用TfidfVectorizer是开始进行情感分析的理想之地。为了避免特征向量稀疏,您可能希望从较少的特征开始,然后根据模型的性能逐步提高。您可以在训练时将其设为超参数,并使用GridSearchPipeline为其找到最佳价值。查看该here的示例。根据具体情况,可能会使用更word embeddings的更强大的实现。但是,这很可能会给您的模型带来更多的复杂性。

字符串中的怪异行是下划线字符,必须已在源文本中出现。在清除过程中未清除它们,因为您使用了re.sub(r'[^\w\s]','',x)从字符串中删除了非单词字符和非空格。下划线是单词字符集('\w')的一部分,因此未将其清除。

我还应该指出,您的大多数自定义清洁都不是必需的,因为TfidfVectorizer应该能够为您处理此事。例如,您删除停用词,然后TfidfVectorizer也尝试删除它们。从字符串中删除标点符号和数字时也是如此。 TfidfVectorizer带有一个token参数,您可以向其传递一个正则表达式以选择要保留在令牌中的字符。如果您只想在字符串中使用字母字符,则用于token参数的此正则表达式应足以为您处理清理工作:'[a-zA-Z]'。同样,我在这里不使用'\w'字符集,因为它包含下划线(和数字)。

由于您已经在训练集上运行了fit_transform的{​​{1}}方法,并且在测试集上运行了TfidfVectorizer方法,因此这些集合中的样本应该可以进行训练/测试了。它们不需要进一步处理。

本文链接:https://www.f2er.com/3132469.html

大家都在问