秒懂!看机器学习如何净化处理文本

更多深度文章,请关注:https://yq.aliyun.com/cloud

你不能直接把原始文本提交给机器学习或深层学习模型,而必须首先对文本进行净化,也就是将文本分解成单词,以及处理标点符号和大小写。

事实上,你需要使用一整套的文本预处理方法,而且这个方法的选择取决于你需要对自然语言做何种处理。

在本教程中,你将学到如何为机器学习建模而净化和处理文本,包括:

  • 如何开发简单的文本净化工具。
  • 如何使用NLTK库中更复杂的方法。
  • 在使用现代文字表示方法时如何处理文本。

让我们开始吧。


照片出自changehali,保留部分权利。

教程概述

本教程包含六个部分,分别为:

  1. 弗兰茨·卡夫卡的《变形记》
  2. 文本净化是一件依赖于具体任务的工作
  3. 手动标记
  4. 使用NLTK进行标记和净化
  5. 文本净化注意事项

弗兰茨·卡夫卡的《变形记》

首先选择一个数据集。

本教程使用了弗兰茨·卡夫卡《变形记》一书中的文字。选这本书中的文字并没有什么具体的原因,除了它比较短以外。我很喜欢这本书,希望你也会喜欢。我期望它是学生们必读的经典之作之一。

《变形记》全文可以从Gutenberg项目免费获得。

你也可以在这里下载ASCII文本版:

下载该文件,并将其放在你当前的工作目录中,文件名为“metamorphosis.txt“。

该文件包含了我们不感兴趣的页眉和页脚,特别是版权和授权信息。请打开文件,删除页眉和页脚,并将文件另存为“metamorphosis_clean.txt“。

这个干净文件的开头应该是这样的:

One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin.

文件的结尾应该是这样的:

And, as if in confirmation of their new dreams and good intentions, as soon as they reached their destination Grete was the first to get up and stretch out her young body.

文本净化是一件依赖于具体任务的工作

在拿到了文本数据之后,清理文本数据的第一步是为了让你对要实现的目标有一个清晰的概念。

仔细看看这篇文章。你能注意到哪些东西?

这是我发现的:

  • 它是纯文本,所以没有标记需要解析。
  • 原始德语的翻译使用的是英国英语(例如“*travelling*“)。
  • 文本被人工断行,每一行70个字符。
  • 没有明显的打印错误或拼写错误。
  • 存在一些标点符号,如逗号、撇号、引号、问号等等。
  • 存在连字符,如“armour-like”。
  • 有很多地方都用破折号(“ - ”)来继续句子(是否可以用逗号替代)?
  • 存在很多人名(例如“*Mr. Samsa*”)
  • 似乎没有需要处理的数字(例如1999)
  • 存在段标记字符(例如“II”和“III”),之前已经删除了第一个“I”。

我相信有很多双训练有素的眼睛能观察到这些细节问题。

下文将展示最常见的文本净化步骤。不过,请思考一下在处理这个文本文件时可能会遇到的一些小问题。

例如:

  • 如果对开发Kafkaesque语言模型感兴趣,那么可以保留所有的大小写、引号和其他标点符号。
  • 如果对将文档归类为“*Kafka*”和“*非Kafka*”感兴趣,也许可以去掉大小写、标点符号。

请根据你要完成的任务来选择如何处理文本数据。

手动标记

文字净化很难,而本教程使用的文字已经很干净了。

我们可以编写一些Python代码来手动净化它,这对于遇到的那些简单问题来说是一个不错的处理方法。而诸如正则表达式和分割字符串的工具则可能需要耗费你较多的时间。

1. 加载数据

现在我们来加载文本数据吧。

这个文本文件很小,加载到内存的速度很快。但并不是所有的文本文件都会这么小,你可能需要写代码将内存映射到文件上。像NLTK这样的工具(下一节将介绍)能简化对大型文件的处理。

将“metamorphosis_clean.txt”整个加载到内存中,如下所示:

# load text
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()

运行该示例将整个文件加载到内存中。

2. 按空格分隔

干净的文本通常意味着可以在机器学习模型中使用的单词或标记列表。因此,我们需要将原始文本转换为单次列表,并保存下来。

最简单的方法就是将文档按空格进行分割,包括引号、新的一行、制表符等等。我们可以在Python中对加载的字符串使用split()函数。

# load text
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words by white space
words = text.split()
print(words[:100])

运行这个示例可以将文档分割成一个很长的列表,然后打印前100个元素。

可以看到,标点符号被保留下来了(例如“wasn’t”和“armour-like”),这很好。还还可以看到,句尾的标点符号与最后一个单词放在了一起,没有分割开(例如“thought.”),这不太好。

['One', 'morning,', 'when', 'Gregor', 'Samsa', 'woke', 'from', 'troubled', 'dreams,', 'he', 'found', 'himself', 'transformed', 'in', 'his', 'bed', 'into', 'a', 'horrible', 'vermin.', 'He', 'lay', 'on', 'his', 'armour-like', 'back,', 'and', 'if', 'he', 'lifted', 'his', 'head', 'a', 'little', 'he', 'could', 'see', 'his', 'brown', 'belly,', 'slightly', 'domed', 'and', 'divided', 'by', 'arches', 'into', 'stiff', 'sections.', 'The', 'bedding', 'was', 'hardly', 'able', 'to', 'cover', 'it', 'and', 'seemed', 'ready', 'to', 'slide', 'off', 'any', 'moment.', 'His', 'many', 'legs,', 'pitifully', 'thin', 'compared', 'with', 'the', 'size', 'of', 'the', 'rest', 'of', 'him,', 'waved', 'about', 'helplessly', 'as', 'he', 'looked.', '"What\'s', 'happened', 'to', 'me?"', 'he', 'thought.', 'It', "wasn't", 'a', 'dream.', 'His', 'room,', 'a', 'proper', 'human']

3. 选择单词

另一种方法是使用正则表达式模型,并通过使用字母数字过滤字符串(a-z,A-Z,0-9和‘_’)将文档分割成单词。

例如:

# load text
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split based on words only
import re
words = re.split(r'\W+', text)
print(words[:100])

运行该示例,可以看到最终的单词列表。 这一次,“armour-like”变成了两个单词“armour”和“like”(很好),但缩略词,像“What’s”也变成了两个单词“What”和“s”(不是很好)。

['One', 'morning', 'when', 'Gregor', 'Samsa', 'woke', 'from', 'troubled', 'dreams', 'he', 'found', 'himself', 'transformed', 'in', 'his', 'bed', 'into', 'a', 'horrible', 'vermin', 'He', 'lay', 'on', 'his', 'armour', 'like', 'back', 'and', 'if', 'he', 'lifted', 'his', 'head', 'a', 'little', 'he', 'could', 'see', 'his', 'brown', 'belly', 'slightly', 'domed', 'and', 'divided', 'by', 'arches', 'into', 'stiff', 'sections', 'The', 'bedding', 'was', 'hardly', 'able', 'to', 'cover', 'it', 'and', 'seemed', 'ready', 'to', 'slide', 'off', 'any', 'moment', 'His', 'many', 'legs', 'pitifully', 'thin', 'compared', 'with', 'the', 'size', 'of', 'the', 'rest', 'of', 'him', 'waved', 'about', 'helplessly', 'as', 'he', 'looked', 'What', 's', 'happened', 'to', 'me', 'he', 'thought', 'It', 'wasn', 't', 'a', 'dream', 'His', 'room']

3. 按空格分割并删除标点符号

注意:本示例是用Python 3编写的。

我们想要的是单词,而不是标点符号,比如逗号或引号。我们也希望缩略词不要被分割开。

一种方法是将文档按空格进行分割(在“2. 按空格分隔”中提到的),然后使用字符串转换来替换所有标点符号(例如删除标点符号)。

Python提供了一个名为string.punctuation的常量,它是所有标点符号列表。例如:

print(string.punctuation)

结果是:

!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Python提供了一个名为translate()的函数,它可以将一组字符映射到另一组。

可以使用函数maketrans()来创建一个映射表。这个函数的第三个参数用于列出在翻译过程中要删除的所有字符。例如:

table = str.maketrans('', '', string.punctuation)

我们可以将上面这些代码放在一起,加载文本文件,将其按空格分割成单词,然后转换每个单词以删除标点符号。

# load text
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words by white space
words = text.split()
# remove punctuation from each word
import string
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in words]
print(stripped[:100])

在通常情况下,可以看到这已经达到了预期的效果。

诸如“What’s”这样的缩略语已经变成了“Whats”,而“armour-like”已经变成了“armourlike”。

['One', 'morning', 'when', 'Gregor', 'Samsa', 'woke', 'from', 'troubled', 'dreams', 'he', 'found', 'himself', 'transformed', 'in', 'his', 'bed', 'into', 'a', 'horrible', 'vermin', 'He', 'lay', 'on', 'his', 'armourlike', 'back', 'and', 'if', 'he', 'lifted', 'his', 'head', 'a', 'little', 'he', 'could', 'see', 'his', 'brown', 'belly', 'slightly', 'domed', 'and', 'divided', 'by', 'arches', 'into', 'stiff', 'sections', 'The', 'bedding', 'was', 'hardly', 'able', 'to', 'cover', 'it', 'and', 'seemed', 'ready', 'to', 'slide', 'off', 'any', 'moment', 'His', 'many', 'legs', 'pitifully', 'thin', 'compared', 'with', 'the', 'size', 'of', 'the', 'rest', 'of', 'him', 'waved', 'about', 'helplessly', 'as', 'he', 'looked', 'Whats', 'happened', 'to', 'me', 'he', 'thought', 'It', 'wasnt', 'a', 'dream', 'His', 'room', 'a', 'proper', 'human']

4. 规范大小写

将所有单词转换为统一的大小写很常见。这能减少单词量,但也会丢失某些差异(例如,“Apple”公司和“apple”水果是最常见的例子)。

可以对每个单词调用lower()函数来将所有的单词转换为小写。

例如:

filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words by white space
words = text.split()
# convert to lower case
words = [word.lower() for word in words]
print(words[:100])

运行示例,可以看到所有的单词现在都变成小写了。

['one', 'morning,', 'when', 'gregor', 'samsa', 'woke', 'from', 'troubled', 'dreams,', 'he', 'found', 'himself', 'transformed', 'in', 'his', 'bed', 'into', 'a', 'horrible', 'vermin.', 'he', 'lay', 'on', 'his', 'armour-like', 'back,', 'and', 'if', 'he', 'lifted', 'his', 'head', 'a', 'little', 'he', 'could', 'see', 'his', 'brown', 'belly,', 'slightly', 'domed', 'and', 'divided', 'by', 'arches', 'into', 'stiff', 'sections.', 'the', 'bedding', 'was', 'hardly', 'able', 'to', 'cover', 'it', 'and', 'seemed', 'ready', 'to', 'slide', 'off', 'any', 'moment.', 'his', 'many', 'legs,', 'pitifully', 'thin', 'compared', 'with', 'the', 'size', 'of', 'the', 'rest', 'of', 'him,', 'waved', 'about', 'helplessly', 'as', 'he', 'looked.', '"what\'s', 'happened', 'to', 'me?"', 'he', 'thought.', 'it', "wasn't", 'a', 'dream.', 'his', 'room,', 'a', 'proper', 'human']

注意

净化文本真的很难,需要具体问题具体分析。记住,越简单越好。文本数据越简单,则模型越简单,词汇表更小。

下面来看一下NLTK库中的一些工具,可不仅仅是简单的字符串拆分哦。

使用NLTK进行标记和净化

Natural Language Toolkit(自然语言工具包)或简称NLTK是一个对文本进行处理和建模的Python库。

它提供了不错的加载和净化文本工具,我们可以用这些工具来为机器学习和深度学习算法获取数据。

1. 安装 NLTK

你可以使用你最喜欢的软件包管理器来安装NLTK,例如pip:

sudo pip install -U nltk

安装完成之后,你还需要安装与库一起配套使用的数据,其中包含了大量的文档,你可以使用这些文档来测试NLTK中的其他工具。

有多种方法来安装数据和文档,例如,用脚本:

import nltk
nltk.download()

或用命令行:

python -m nltk.downloader all

有关安装和设置NLTK的更多帮助,请参阅:

2. 分割成句子

第一步是将文本分割成句子。

一些建模任务倾向于以段落或句子的形式输入文本,例如word2vec。你可以先将文本分割成句子,再将每个句子分割成单词,然后将每个句子保存到文件中,每行一个句子。

NLTK提供的sent_tokenize()函数可以将文本分割成句子。

下面的示例将“metamorphosis_clean.txt”文件加载到内存中,将其分割成句子,并打印第一个句子。

# load data
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into sentences
from nltk import sent_tokenize
sentences = sent_tokenize(text)
print(sentences[0])

运行这个示例,可以看到文档被分割成了句子。

One morning, when Gregor Samsa woke from troubled dreams, he found
himself transformed in his bed into a horrible vermin.

3. 分割成单词

NLTK提供了一个名为word_tokenize()的函数,可用于将字符串分割成标记(也就是单词)。

它根据空格和标点符号进行分割。例如,逗号和句点被视为单独的标记。而缩略语也会分割开(例如“What’s”变成“What”和“’s“)。引号会被保留。

例如:

# load data
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words
from nltk.tokenize import word_tokenize
tokens = word_tokenize(text)
print(tokens[:100])

运行这段代码,可以看到标点符号现在已经成为了标记,后面可以决定是否要过滤掉。

['One', 'morning', ',', 'when', 'Gregor', 'Samsa', 'woke', 'from', 'troubled', 'dreams', ',', 'he', 'found', 'himself', 'transformed', 'in', 'his', 'bed', 'into', 'a', 'horrible', 'vermin', '.', 'He', 'lay', 'on', 'his', 'armour-like', 'back', ',', 'and', 'if', 'he', 'lifted', 'his', 'head', 'a', 'little', 'he', 'could', 'see', 'his', 'brown', 'belly', ',', 'slightly', 'domed', 'and', 'divided', 'by', 'arches', 'into', 'stiff', 'sections', '.', 'The', 'bedding', 'was', 'hardly', 'able', 'to', 'cover', 'it', 'and', 'seemed', 'ready', 'to', 'slide', 'off', 'any', 'moment', '.', 'His', 'many', 'legs', ',', 'pitifully', 'thin', 'compared', 'with', 'the', 'size', 'of', 'the', 'rest', 'of', 'him', ',', 'waved', 'about', 'helplessly', 'as', 'he', 'looked', '.', '``', 'What', "'s", 'happened', 'to']

4. 过滤标点符号

我们可以过滤掉我们不感兴趣的标记,例如所有独立的标点符号。

通过遍历所有标记并仅保留所有字母的标记可以实现这个目的。 在Python中,isalpha()这个函数很有用。

例如:

# load data
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words
from nltk.tokenize import word_tokenize
tokens = word_tokenize(text)
# remove all tokens that are not alphabetic
words = [word for word in tokens if word.isalpha()]
print(tokens[:100])

运行这个示例,你可以看到不仅标点符号,而且“armour-like”和“‘s”也被过滤掉了。

['One', 'morning', 'when', 'Gregor', 'Samsa', 'woke', 'from', 'troubled', 'dreams', 'he', 'found', 'himself', 'transformed', 'in', 'his', 'bed', 'into', 'a', 'horrible', 'vermin', 'He', 'lay', 'on', 'his', 'back', 'and', 'if', 'he', 'lifted', 'his', 'head', 'a', 'little', 'he', 'could', 'see', 'his', 'brown', 'belly', 'slightly', 'domed', 'and', 'divided', 'by', 'arches', 'into', 'stiff', 'sections', 'The', 'bedding', 'was', 'hardly', 'able', 'to', 'cover', 'it', 'and', 'seemed', 'ready', 'to', 'slide', 'off', 'any', 'moment', 'His', 'many', 'legs', 'pitifully', 'thin', 'compared', 'with', 'the', 'size', 'of', 'the', 'rest', 'of', 'him', 'waved', 'about', 'helplessly', 'as', 'he', 'looked', 'What', 'happened', 'to', 'me', 'he', 'thought', 'It', 'was', 'a', 'dream', 'His', 'room', 'a', 'proper', 'human', 'room']

5. 过滤掉停止词

停止词是指那些对这个词语的深层含义没有贡献的词。

这些是最常见的停止词:“the”,“a”和“is”。

对于某些应用(如文档分类)来说,删除停止词非常必要。

NLTK提供了各种语言(如英语)最常用的停止词列表,可以像如下代码那样加载:

from nltk.corpus import stopwords
stop_words = stopwords.words('english')
print(stop_words)

你可以看到完整的列表:

['i', 'me', 'my', 'myself', 'we', 'our', 'ours', 'ourselves', 'you', 'your', 'yours', 'yourself', 'yourselves', 'he', 'him', 'his', 'himself', 'she', 'her', 'hers', 'herself', 'it', 'its', 'itself', 'they', 'them', 'their', 'theirs', 'themselves', 'what', 'which', 'who', 'whom', 'this', 'that', 'these', 'those', 'am', 'is', 'are', 'was', 'were', 'be', 'been', 'being', 'have', 'has', 'had', 'having', 'do', 'does', 'did', 'doing', 'a', 'an', 'the', 'and', 'but', 'if', 'or', 'because', 'as', 'until', 'while', 'of', 'at', 'by', 'for', 'with', 'about', 'against', 'between', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'to', 'from', 'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under', 'again', 'further', 'then', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'all', 'any', 'both', 'each', 'few', 'more', 'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'can', 'will', 'just', 'don', 'should', 'now', 'd', 'll', 'm', 'o', 're', 've', 'y', 'ain', 'aren', 'couldn', 'didn', 'doesn', 'hadn', 'hasn', 'haven', 'isn', 'ma', 'mightn', 'mustn', 'needn', 'shan', 'shouldn', 'wasn', 'weren', 'won', 'wouldn']

可以看到,它们都是小写字母,并且标点符号已被删除。你可以将你的标记与停止词进行比较,并将其过滤掉。

下面来演示一下这个过程:

  1. 加载原始文本。
  2. 分成多个标记。
  3. 转换为小写。
  4. 从每个标记中删除标点符号。
  5. 滤除不是字母的标记。
  6. 过滤掉停止词。
# load data
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words
from nltk.tokenize import word_tokenize
tokens = word_tokenize(text)
# convert to lower case
tokens = [w.lower() for w in tokens]
# remove punctuation from each word
import string
table = str.maketrans('', '', string.punctuation)
stripped = [w.translate(table) for w in tokens]
# remove remaining tokens that are not alphabetic
words = [word for word in stripped if word.isalpha()]
# filter out stop words
from nltk.corpus import stopwords
stop_words = set(stopwords.words('english'))
words = [w for w in words if not w in stop_words]
print(words[:100])

运行这个例子,可以看到除了其他的转换之外,像“a”和“to”这样的停止词已被删除。但是还留下了像“nt”这样的标记。 革命尚未成功,同志仍须努力。

['one', 'morning', 'gregor', 'samsa', 'woke', 'troubled', 'dreams', 'found', 'transformed', 'bed', 'horrible', 'vermin', 'lay', 'armourlike', 'back', 'lifted', 'head', 'little', 'could', 'see', 'brown', 'belly', 'slightly', 'domed', 'divided', 'arches', 'stiff', 'sections', 'bedding', 'hardly', 'able', 'cover', 'seemed', 'ready', 'slide', 'moment', 'many', 'legs', 'pitifully', 'thin', 'compared', 'size', 'rest', 'waved', 'helplessly', 'looked', 'happened', 'thought', 'nt', 'dream', 'room', 'proper', 'human', 'room', 'although', 'little', 'small', 'lay', 'peacefully', 'four', 'familiar', 'walls', 'collection', 'textile', 'samples', 'lay', 'spread', 'table', 'samsa', 'travelling', 'salesman', 'hung', 'picture', 'recently', 'cut', 'illustrated', 'magazine', 'housed', 'nice', 'gilded', 'frame', 'showed', 'lady', 'fitted', 'fur', 'hat', 'fur', 'boa', 'sat', 'upright', 'raising', 'heavy', 'fur', 'muff', 'covered', 'whole', 'lower', 'arm', 'towards', 'viewer']

6. 词干单词

词干提取是指抽取每个单词的词干或词根的过程。例如,“fishing,”、“fished,”、“fisher”都可以缩减为“fish”。

目前有很多的词干抽取算法,但最流行的是Porter Stemming算法。 该方法可以通过PorterStemmer类在NLTK中使用。

例如:

# load data
filename = 'metamorphosis_clean.txt'
file = open(filename, 'rt')
text = file.read()
file.close()
# split into words
from nltk.tokenize import word_tokenize
tokens = word_tokenize(text)
# stemming of words
from nltk.stem.porter import PorterStemmer
porter = PorterStemmer()
stemmed = [porter.stem(word) for word in tokens]
print(stemmed[:100])

运行这个例子,可以看到很多单词都已经被抽取了词干,比如,“trouble”已经变成“troubl”。而且,词干提取还使标记变为小写。

['one', 'morn', ',', 'when', 'gregor', 'samsa', 'woke', 'from', 'troubl', 'dream', ',', 'he', 'found', 'himself', 'transform', 'in', 'hi', 'bed', 'into', 'a', 'horribl', 'vermin', '.', 'He', 'lay', 'on', 'hi', 'armour-lik', 'back', ',', 'and', 'if', 'he', 'lift', 'hi', 'head', 'a', 'littl', 'he', 'could', 'see', 'hi', 'brown', 'belli', ',', 'slightli', 'dome', 'and', 'divid', 'by', 'arch', 'into', 'stiff', 'section', '.', 'the', 'bed', 'wa', 'hardli', 'abl', 'to', 'cover', 'it', 'and', 'seem', 'readi', 'to', 'slide', 'off', 'ani', 'moment', '.', 'hi', 'mani', 'leg', ',', 'piti', 'thin', 'compar', 'with', 'the', 'size', 'of', 'the', 'rest', 'of', 'him', ',', 'wave', 'about', 'helplessli', 'as', 'he', 'look', '.', '``', 'what', "'s", 'happen', 'to'

在NLTK中有一整套很棒的词干和词汇算法可供选择。

文本清理注意事项

由于本教程所使用的原始文本非常干净,因此我们可能忽略了你本需要在自己的项目中要做的文本净化工作。

以下是净化文本的一些注意事项:

  • 处理那种不适合全部加载到内存里的大型文件和大批量的文本文档。
  • 从HTML、PDF或其他结构化文档格式的标记中提取文本。
  • 从其他语言翻译为英文。
  • 将Unicode字符解码为标准的形式,比如UTF8。
  • 处理特定领域的单词、短语和缩略词。
  • 处理或删除数字,比如日期和数量。
  • 查找和纠正常见的打印错误和拼写错误。
  • ……

真正干净的文本是不可能存在的,我们需要根据自己所拥有的时间、资源和知识来做到最好。“干净”这个概念是由项目的具体要求来决定的。

在每次转换文本之后都要保存为新的文件,以便后期可以把所有的数据放在一起进行比较查看。

进一步阅读

如果你想阅读更深入的内容,本章节提供了相关的内容。

总结

在本教程中,你学会了如何用Python为机器学习净化文本。

具体一点说,你学到了:

  • 如何开发简单的文本净化工具。
  • 如何使用NLTK库中更复杂的方法。
  • 在使用现代文字表示方法时如何准备文本。

文章原标题《How to Clean Text for Machine Learning with Python》,作者:Jason Brownlee,译者:夏天,审校:主题曲。

文章为简译,更为详细的内容,请查看原文

本文由北邮@爱可可-爱生活老师推荐,阿里云组织翻译。

时间: 2024-11-08 12:54:14

秒懂!看机器学习如何净化处理文本的相关文章

菜鸟应该看的网站优化锚文本

在网站优化过程中锚文本这个词出现的频率相当高,除了大家经常说的优质外链.内链等等,听到最多的也就是锚文本了.可是对于新手站长来说锚文本是什么还不是很清楚,在这里和大家分享一下关于它的一些心得. 首先解释一下锚文本的概念,简单的说就是一个词拥有链接可以点开另一个页面,一般的表现形式就是颜色不同,有下划线,点击后会更改颜色.这个是锚文本外观上的表现形式,相信大家在各种文章中都见过这样的格式.下面再说说锚文本内在的性质,第一文字上加了链接不管是站内还是站外都叫锚文本;第二,在图片下面加入链接的也不能叫

看实例学VFP:文本框控件

文本框控件(textbox)主要用于接收或显示数据,在vfp中是一个常用控件,差不多每个程序都要用到它.vfp基础教程-文本框(textbox)控件及vfp基础教程-数组中已经分别对文本框控件和数组做了介绍,本文来设计一个将这二者结合起来应用的例子. 关于文本框控件数据源的处理: 如果在表单中使用数据环境,可以在"数据环境设计器"中拖动表的各个字段到表单上,系统会自动生成各个字段对应的标签及文本框,并且文本框的数据源会自动与表中对应的字段绑定,这是一种处理方式:另外也可以不使用数据环境

Python、R、Java、 C++ 等:从业界反馈看机器学习语言趋势

对于开发者来说,掌握什么编程语言能更容易找到机器学习或者数据科学的工作? 这是个许多人关心的问题,非常实际,也在许多论坛被翻来覆去地讨论过.非常显著的是 "Python 是大趋势"这一论调,似乎它即将在机器学习领域一统天下.那么这种说法到底有几分事实? 首先要指出的是,大多数对编程语言的讨论都比较主观.比如说,有的开发者(尤其是初学者)会因为一门语言的某个特性很契合自己的使用习惯.用着最顺手,就狂赞这门语言,而对其他语言的优点选择性失明.而这篇雷锋网编译自 IBM 开发者论坛的文章,则

Salesforce 用机器学习来自动总结文本,AI+SaaS 是未来吗?

如今我们身处海量信息时代,大量时间被用来处理电子邮件.文章或社交媒体的帖子等信息,有预计称,这种消耗状态会超过半天时间,甚至更多. Salesforce 想将用户从这种低效的工作状态中解放,他们开发了种算法,能自动总结纷繁复杂的信息,如为销售或客户服务代表提供电子邮件和信息总结后的摘要,使他们有更多时间精力专注于自家客户. 例如, Salesforce 的 AI 新产品 Einstein 会为那些全天候与电话打交道的客服代表,匹配最可能成为公司用户的电话号码.这饱含着 Salesforce 想把

各位大神看过来!我发文本信息时偶尔进度条转很久信息才发送出去?求解啊

问题描述 这是发信息的代码,holder.pb就是信息前面的进度条 解决方案 debug下看看,在这个成功回调的方法中来更新这个发送消息成功的状态的,你这边可以debug看下这个代码了.

拒绝跟风,看机器学习、数据科学、人工智能、深度学习、统计学等的区别

本文作者Vincent Granville通过阐明数据科学家各种各样的角色,以及数据科学与相关领域的不同以及交叉,比如机器学习.深度学习.AI.IoT.统计学.运筹学和应用数学.PS,通过Maxcompute及其配套产品,低廉的大数据分析仅需几步,详情访问https://www.aliyun.com/product/odps. 以下为译文 因为数据科学是个广义的学科,所以这里将从任何业务里都可能会遇到的数据科学家类型开始,通过这个部分或许你能发现自己隐藏的数据科学家潜质:)正如任何科学学科一样,

开发者入门必读:最值得看的十大机器学习公开课

在当下的机器学习热潮,人才匮乏十分显著.截至目前,国内开设人工智能(AI)专业的高校不多,相当多的开发者是跨界入门,需要自学大量知识并摸索.因而优质的学习资源至关重要.因此,雷锋网搜集了全世界范围内最受欢迎的机器学习课程,整理成这份"机器学习十大入门公开课"盘点,集中呈现给各位.这份推荐榜颇费心血,综合考虑了难易.侧重点.时效性等诸多因素,希望能帮助大家找到最适合自己的学习资源. 这些课程全部免费开放,但有些需翻墙,有的缺少中文字幕. 1. 吴恩达"机器学习"公开课

借助亚马逊S3和RapidMiner将机器学习应用到文本挖掘

本挖掘典型地运用了机器学习技术,例如聚类,分类,关联规则,和预测建模.这些技术揭示潜在内容中的意义和关系.文本发掘应用于诸如竞争情报,生命科学,客户呼声,媒体和出版,法律和税收,法律实施,情感分析和趋势识别. 在本篇博客帖中,你将会学习到如何将机器学习技术应用到文本挖掘中.我将会向你展示如何使用RapidMiner(一款流行的预测分析开源工具)和亚马逊S3业务来创建一个文件挖掘应用.亚马逊S3业务是一项易用的存储服务,可使组织在网页上的任何地方存储和检索任意数量的数据. 掘模型产生的结果可以得到

文本分类的背景和流程

目前所说的文本分类是通过机器学习的方式对文本进行分类. 首先给出各类文本的样例,也就是训练集,然后程序会通过统计方法找出各类文本背后隐藏的统计规律,比如某类文本中某些词出现的次数比较多,然后对未知类别的文本进行判断. 具体可以分为以下流程: 1. 构建训练集:通过人工方式对原始文本进行标定,比如分为垃圾邮件和正常邮件.训练集中各类文本最好能偶达到数目平衡,避免出现某一类特别多,另外一类特别少的情况(如果出现了,可以通过一系列方法进行弥补,比如最简单的"向下取样法"或者"向上取