赞
踩
在任何机器学习任务中,清理(cleaning )或预处理(preprocessing)数据与模型构建同样重要,甚至更重要。 当涉及文本等非结构化数据时,这个过程就更加重要。
小写是一种常见的文本预处理技术。 这个想法是将输入文本转换为相同的大小写格式,以便以相同的方式处理 'text'、'Text' 和 'TEXT'。
- def lower_casing(self, text):
- return text.lower()
另一种常见的文本预处理技术是从文本数据中删除标点符号。 这又是一个文本标准化过程,将有助于处理“hurray”和“hurray!” 以同样的方式。
- # PUNCT_TO_REMOVE = """!"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~`‘"""
- def remove_punctuation(self, text):
-
- return text.translate(str.maketrans('', '', self.PUNCT_TO_REMOVE))
停用词是语言中常见的单词,如“the”、“a”等。 大多数时候它们可以从文本中删除,因为它们不为下游分析提供有价值的信息。 在像词性标记这样的情况下,我们不应该删除它们,因为它们提供了有关 POS 的非常有价值的信息。
- def remove_stopwords(self, text):
- """custom function to remove the stopwords"""
- return " ".join([word for word in str(text).split() if word not in self.STOPWORDS])
在前面的预处理步骤中,我们根据语言信息删除了停用词。 但是,如果我们有一个特定领域的语料库,我们可能还会有一些对我们来说不太重要的频繁出现的单词。
所以这一步就是去除给定语料库中的频繁出现的单词。 如果我们使用 tfidf 之类的东西,就会自动解决这个问题。
- from collections import Counter
- cnt = Counter()
- for text in df["text"].values:
- for word in text.split():
- cnt[word] += 1
-
- cnt.most_common(10)
这与之前的预处理步骤非常相似,但我们将从语料库中删除稀有单词。
- n_rare_words = 10
- RAREWORDS = set([w for (w, wc) in cnt.most_common()[:-n_rare_words-1:-1]])
- def remove_rarewords(text):
- """custom function to remove the rare words"""
- return " ".join([word for word in str(text).split() if word not in RAREWORDS])
-
- df["text"] = df["text"].apply(lambda text: remove_rarewords(text))
词干提取是将词形变化(或有时派生)的单词还原为其词干、词根或词根形式的过程
例如,如果语料库中有两个单词walks和walking,那么词干提取就会对后缀进行词干处理,使它们成为walking。 但在另一个例子中,我们有两个单词 console 和 consoling,词干分析器将删除后缀并使它们成为 consol,这不是一个正确的英语单词。
有多种类型的词干算法可用,其中最著名的一种是广泛使用的 porter 词干分析器。 我们可以使用 nltk 包来实现同样的目的。
- # self.stemmer = PorterStemmer()
- def stem_words(self, text):
- return " ".join([self.stemmer.stem(word) for word in text.split()])
词形还原与词干提取类似,将词形变化的单词减少到词干,但不同之处在于它确保词根(也称为词条)属于该语言。
因此,这一过程通常比词干提取过程慢。 因此,根据速度要求,我们可以选择使用词干提取或词形还原。
让我们使用 nltk 中的 WordNetLemmatizer 来对句子进行词形还原
- # self.lemmatizer = WordNetLemmatizer()
- def lemmatize_words(self, text):
- return " ".join([self.lemmatizer.lemmatize(word) for word in text.split()])
随着社交媒体平台的使用越来越多,表情符号在我们日常生活中的使用也呈爆炸式增长。 也许我们可能需要删除这些表情符号以进行一些文本分析。
感谢这段代码,请在下面找到一个辅助函数,从我们的文本中删除表情符号。
- # Reference : https://gist.github.com/slowkow/7a7f61f495e3dbb7e3d767f97bd7304b
- def remove_emoji(string):
- emoji_pattern = re.compile("["
- u"\U0001F600-\U0001F64F" # emoticons
- u"\U0001F300-\U0001F5FF" # symbols & pictographs
- u"\U0001F680-\U0001F6FF" # transport & map symbols
- u"\U0001F1E0-\U0001F1FF" # flags (iOS)
- u"\U00002702-\U000027B0"
- u"\U000024C2-\U0001F251"
- "]+", flags=re.UNICODE)
- return emoji_pattern.sub(r'', string)
-
- remove_emoji("game is on 声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/533922推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。