1. 标记化和文本清理
NLP的核心是将文本分解为有意义的单元的艺术。标记化是将文本拆分为单词、短语甚至句子(标记)的过程。这是为进一步分析奠定基础的第一步。再加上文本清理,删除了不必要的字符、数字和符号,标记化确保使用原始的、可理解的语言单位。
#!pip install nltk
# Example Tokenization and Text Cleaning
text = "NLP is amazing! Let's explore its wonders."
tokens = nltk.word_tokenize(text)
cleaned_tokens = [word.lower() for word in tokens if word.isalpha()]
print(cleaned_tokens)
['nlp', 'is', 'amazing', 'let', 'explore', 'its', 'wonders']
2. 常用词删除:
并非所有单词对句子的含义都有同等的贡献。像"the"或"and"这样的常用词通常会被过滤掉,以专注于更有意义的内容。
# Example Stop Words
from nltk.corpus import stopwords
stop_words = set(stopwords.words("english"))
filtered_sentence = [word for word in cleaned_tokens if word not in stop_words]
print(filtered_sentence)
['nlp', 'amazing', 'let', 'explore', 'wonders']
3. 词干提取和词形还原
词干提取和词形还原化都是自然语言处理 (NLP) 中使用的文本规范化技术,用于将单词简化为其基本或根形式。虽然它们有着简化单词的共同目标,但它们在应用的语言知识方面却有所不同。
词干提取:简化为根形式
词干提取涉及切断单词的前缀或后缀以获得它们的词根或基本形式,称为词干。目的是将具有相似含义的单词视为相同。词干提取是一种基于规则的方法,并不总是产生有效的单词,但它的计算强度较低。
词形还原:转换为字典形式
另一方面,词形还原涉及将单词简化为基本形式或字典形式,称为引理。它考虑了句子中单词的上下文并应用形态分析。与词干化相比,词形还原会产生有效的单词,并且在语言上更具信息性。
何时使用词干提取与词形还原:
词干提取:
- 优点: 简单且计算成本更低。
- 缺点:可能并不总是产生有效的单词。
词形还原:
- 优点:产生有效的单词;考虑语言上下文。
- 缺点:比词干提取更耗费计算量。
词干提取和词形还原之间的选取:
词干提取和词形还原之间的选择取决于 NLP 任务的具体要求。如果需要一种快速直接的文本分析方法,那么词干提取可能就足够了。但是,如果语言准确性至关重要,尤其是在信息检索或问答等任务中,则通常首选词形还原。
在实践中,选择通常取决于基于 NLP 应用程序的特定特征的计算效率和语言准确性之间的权衡。
# Example Stemming, and Lemmatization
from nltk.stem import PorterStemmer, WordNetLemmatizer
stemmer = PorterStemmer()
lemmatizer = WordNetLemmatizer()
stemmed_words = [stemmer.stem(word) for word in filtered_sentence]
lemmatized_words = [lemmatizer.lemmatize(word) for word in filtered_sentence]
print(stemmed_words)
print(lemmatized_words)
['nlp', 'amaz', 'let', 'explor', 'wonder']
['nlp', 'amazing', 'let', 'explore', 'wonder']
4. 词性标签:
词性标记(POS 标记)是一项自然语言处理任务,其目标是为给定文本中的每个单词分配一个语法类别(例如名词、动词、形容词等)。这样可以更深入地了解句子中每个单词的结构和功能。
Penn Treebank POS 标签集是一种广泛使用的标准,用于在英语文本中表示这些词性标签。
# Example Part-of-Speech Tagging
from nltk import pos_tag
pos_tags = nltk.pos_tag(filtered_sentence)
print(pos_tags)
[('nlp', 'RB'), ('amazing', 'JJ'), ('let', 'NN'), ('explore', 'NN'), ('wonders', 'NNS')]
5. 命名实体识别 (NER):
NER 通过识别和分类给定文本中的名称、位置、组织等实体,将语言理解提升到一个新的水平。这对于从非结构化数据中提取有意义的信息至关重要。
# Example Named Entity Recognition (NER)
from nltk import ne_chunk
ner_tags = ne_chunk(pos_tags)
print(ner_tags)
(S nlp/RB amazing/JJ let/NN explore/NN wonders/NNS)
NLP预处理步骤的实际应用
社交媒体情绪分析中的标记化和文本清理
在社交媒体情绪分析中,标记化和文本清理至关重要。例如,在分析推文以衡量公众对新产品的情绪时,标记化有助于将推文分解为单个单词或短语。文本清理用于消除社交媒体文本中常见的主题标签、提及和 URL 等噪音。
import re
def clean_tweet(tweet):
tweet = re.sub(r'@\w+', '', tweet) # Remove mentions
tweet = re.sub(r'#\w+', '', tweet) # Remove hashtags
tweet = re.sub(r'http\S+', '', tweet) # Remove URLs
return tweet
tweet = "Loving the new #iPhone! Best phone ever! @Apple"
clean_tweet(tweet)
'Loving the new ! Best phone ever! '
搜索引擎中的常用词删除
搜索引擎广泛使用常用词删除。在处理搜索查询时,通常会删除"the"、"is"和"in"等常用词,以专注于更有可能与搜索结果相关的关键字。
文本分类中的词干提取和词形还原
新闻机构和内容聚合器经常使用词干提取和词形还原进行文本分类。通过将单词简化为基本形式或词根形式,算法可以更轻松地将新闻文章分类为"体育"、"政治"或"娱乐"等主题。
语音助手中的词性标记
亚马逊的Alexa或苹果的Siri等语音助手使用词性标记来改善语音识别和自然语言理解。通过确定单词的语法上下文,这些助手可以更准确地解释用户请求。
客户支持自动化中的命名实体识别 (NER)
NER广泛用于客户支持聊天机器人。通过识别和分类产品名称、位置或用户问题等实体,聊天机器人可以对客户查询提供更有效和量身定制的响应。
这些例子突出了NLP预处理步骤在各个行业中的实际意义,使抽象的概念更加具体和易于掌握。了解这些应用程序不仅可以提供背景信息,还可以激发未来项目的想法。!