线性预处理文本中是否有正确的步骤?

我合并了两个不同的数据集,以使一列具有文本,另一列具有情感评分(二进制0、1)

我正在尝试建立一个线性回归模型,根据文本中使用的单词来预测情绪, 到目前为止,对文本进行了预处理,我将所有文本都更改为小写。

我想知道此后的下一步是什么?我已经读了一些,但我想我可能没有正确的步骤。

1. lowercase                         1. lowercase
2. remove punctuation               2. tokenize
3.tokenize                          3. remove punctuation

哪种方法更正确,如果我先删除标点符号,我可能会丢失诸如“不能”和“不能”之类的详细信息。

history918 回答:线性预处理文本中是否有正确的步骤?

为机器学习预处理文本通常涉及两个步骤:(I)清除文本,和(II)将文本转换为数字(也就是嵌入)。这两个步骤的选择技术完全取决于任务,并且彼此相关。

(I)清除文本:通常涉及(i)处理文本大小写,(ii)处理标点符号,(iii)处理停用词

(i)处理文本大小写:如果您的文本是英语语料库,并且所选的嵌入技术是用于与相似性度量相关的任务,那么最好将所有文本/语料库转换为小写。但是,如果您使用单词嵌入作为序列模型中单词的输入表示的任务(例如,标记,机器翻译等),则文本大小写可能会很重要。 最好在嵌入回归任务之前将文本转换为小写。

(ii)处理标点符号 !"#$%&\'()*+,-./:;<=>?@[\\]^_ {|}〜`: 如果您使用词嵌入技术来完成与相似性相关的任务,则可以使用文本语料库中的替代词(例如,用‘代替)来清除/消除标点符号。嵌入这些任务的单词可以是单词袋(BoW),Word2Vect等。对于此处的特定任务(回归),最好用标点符号替换为来清除标点符号。对于某些应用程序(例如,多语言机器翻译),标点符号可能很重要。

(iii)处理停用词: 停用词(例如,“ i”,“他”,“…”)是在语料库中出现频率很高的单词。停用词通常无法提供有关上下文或句子的真实含义的有用信息。常见的NLP库(例如NTK,gensim,spaCy,sklearn)提供了某些语言的停用词列表。对于与相似性相关的任务,最好在嵌入之前删除停用词。删除停用词将应用于您的任务(回归)。在学习嵌入某些其他任务(例如机器翻译)之前,停用词可能非常有用,不应将其删除。 最好为回归任务删除停用词

(II)将文本转换为数字(嵌入): 为了使文本数据适合机器学习模型(例如您的回归模型),您需要将文本数据转换为数字向量。在此转换过程之前,需要 Tokenization 。 在NLP / ML中,此转换过程称为embedding。在NLP中有很多不同的方法来进行单词嵌入(例如,频率项(BoW),共同统计(GloVe),概率模型(LDA2Vec),神经网络(基于Word2Vec,FastText,BIRD等)。 。每种技术都有其优点和缺点。选择单词嵌入技术在很大程度上取决于您的应用程序/任务。这里没有足够的空间来描述每个单词的嵌入方法/技术。

以下是一些处理文本的在线教程,可以帮助您快速了解并解决问题:

1)Sklearn-处理文本数据(https://scikit-learn.org/stable/tutorial/text_analytics/working_with_text_data.html

2)NLTK教程(https://www.nltk.org/book/ch01.html

3)Spacy-语言处理管道教程(https://spacy.io/usage/processing-pipelines

4)如何使用Python(https://machinelearningmastery.com/clean-text-machine-learning-python/)清理文本以进行机器学习

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

大家都在问