有没有运用机器学习处理文本分类问题的教程?( 二 )


如果需要 。我们还可以将文本分为句子而不是单词 。这称为句子标记化 。在执行句子标记化时 。标记化程序会查找介于句子之间的特定字符 。例如句点 。惊叹号和换行符 。对于句子标记化 。我们将使用预处理管道 。因为使用的句子预处理spaCy包括标记器 。标记器 。解析器和实体识别器 。我们需要访问它们才能正确识别什么是句子 。什么不是 。
在下面的代码中 。spaCy标记文本并创建一个Doc对象 。这个Doc对象使用我们预处理管道的组件标记器 。解析器和实体识别器将文本分解为组件 。从该管道中 。我们可以提取任何组件 。但是在这里 。我们将使用该sentencizer组件访问句子标记 。

有没有运用机器学习处理文本分类问题的教程?

文章插图
有没有运用机器学习处理文本分类问题的教程?

文章插图
同样 。spaCy已将文本正确解析为所需的格式 。这一次输出了在源文本中找到的句子列表 。
清理文本数据:删除停用词
我们使用的大多数文本数据将包含许多实际上对我们没有用的单词 。这些称为停用词的词在人类语音中很有用 。但对数据分析没有多大帮助 。删除停用词可以帮助我们消除文本数据中的杂音和干扰 。还可以加快分析时间(因为要处理的词更少) 。
让我们看看spaCy默认情况下包含的停用词 。我们将spaCy其英语模型中的停用词导入并分配给名为的变量 。spacy_stopwords以便我们进行查看 。
有没有运用机器学习处理文本分类问题的教程?

文章插图
如我们所见 。spaCy的默认停用词列表包括312个条目 。每个条目都是一个单词 。我们还可以看到为什么其中许多单词对数据分析没有用处 。例如 。尽管如此 。过渡词对于理解句子的基本含义并不是必需的 。而诸如“ 某人”之类的词太含糊 。以至于无法用于NLP任务 。
如果需要 。我们还可以创建自己的自定义停用词列表 。但是出于我们在大数据分析Python中spaCy文本分类使用教程中的目的 。spaCy提供的默认列表会很好 。
从我们的数据中删除停用词
现在我们有了停用词列表 。让我们使用它从上一部分中正在研究的文本字符串中删除停用词 。我们的文本已经存储在变量中text 。因此我们不需要再次定义它 。
相反 。我们将创建一个名为的空列表filtered_sent 。然后遍历doc变量以查看源文本中每个标记化的单词 。spaCy包括一堆有用的标记属性 。我们将使用其中的一个is_stop来识别不在停用词列表中的单词 。然后将它们附加到filtered_sent列表中 。
有没有运用机器学习处理文本分类问题的教程?

文章插图
不难理解为什么停用词会有所帮助 。删除它们将我们的原始文本简化为仅几个单词 。这使我们对句子正在讨论的内容有了一个很好的了解:学习数据科学 。并在此过程中避免挑战和挫折 。
词汇规范化
词典标准化是文本数据清除过程中的又一步 。总体而言 。归一化将高维特征转换为适合任何机器学习模型的低维特征 。出于这里的目的 。我们只考虑lemmatization 。即一种处理单词以使其根源减少的方法 。
合法化
合法化是一种处理以下事实的方法:尽管connect 。connection 。connecting 。connected等词并不完全相同 。但它们都具有相同的基本含义:connect 。拼写上的差异在口语中具有语法功能 。但是对于机器处理 。这些差异可能会造成混淆 。因此我们需要一种方法来将所有单词形式的单词connect变成单词connect self 。
一种执行此操作的方法称为“ 阻止” 。词干涉及简单地去除容易识别的前缀和后缀 。以产生通常是单词最简单的版本 。例如 。连接将删除-ion后缀 。并正确地减小以连接 。这种简单的词干通常是需要的 。但是词义化(实际上是查看字典中描述的词及其词根(称为lemma))(只要词存在于字典中)更为精确 。
由于spaCy包含了将单词分解为引理的内置方法 。因此我们可以简单地将其用于引理 。在以下非常简单的示例中 。我们将使用它.lemma_为要分析的每个单词产生引理 。
有没有运用机器学习处理文本分类问题的教程?

文章插图
词性(POS)标记
单词的词性定义了它在句子中的功能 。例如 。名词标识一个对象 。形容词描述一个对象 。动词描述动作 。在句子的上下文中识别和标记每个单词的语音部分称为词性标记或POS标记 。
让我们尝试使用POS标记spaCy!我们需要导入其en_core_web_sm模型 。因为其中包含进行此分析所需的字典和语法信息 。然后 。我们需要做的就是将这个模型加载.load()并遍历我们的新docs变量 。使用确定每个单词的词性.pos_ 。

推荐阅读