赞
踩
自然语言处理 (NLP) 是人工智能 (AI) 和计算语言学的一个子领域,专注于使计算机能够理解、解释和生成人类语言。它涉及计算机和自然语言之间的交互,允许机器以对人类有意义和有用的方式处理、分析和响应文本或口头数据。
NLP中使用的一些重要术语如下:
文本预处理是自然语言处理 (NLP) 中基本且必不可少的步骤。其主要目的是清理原始文本数据并将其转换为适合分析和预测建模的可呈现形式。以下是一些常见的文本预处理技术:
小写是将所有文本转换为小写的过程。这是 NLP 中常见的预处理步骤,可确保一致性并避免与区分大小写相关的问题。Python 中小写过程的实现如下:
- def lowercase_text(text):
- return text.lower()
-
- # Test the function
- input_text = "The Quick Brown Fox JUMPS Over 2 Lazy Dogs."
- output_text = lowercase_text(input_text)
- print(output_text)
在上面的代码中,该函数采用输入文本,并使用 Python 中可用于字符串的方法将其转换为小写。小写很有用,因为它有助于标准化文本数据并将同一单词的不同形式视为相同。例如,“Hello”、“hello”和“HELLO”在小写后都会转换为“hello”。这对于文本规范化和通过减少词汇量和以不区分大小写的方式处理单词来提高 NLP 模型的准确性至关重要。lowercase_text()
lower()
删除标点符号涉及从文本中删除所有标点符号(例如逗号、句点、感叹号)。标点符号删除通常作为文本预处理的一部分执行,以清理 NLP 任务的数据。
- import string
-
- def remove_punctuations(text):
- translator = str.maketrans('', '', string.punctuation)
- return text.translate(translator)
-
- # Test the function
- input_text = "Hello, my name is John! How are you?"
- output_text = remove_punctuations(input_text)
- print(output_text)
在上面的代码中,我们使用函数从输入文本中删除所有标点符号。该函数使用模块中的常量来获取包含所有标点字符的字符串。然后,它使用该方法创建一个转换表,并从输入文本中删除标点符号表中的所有字符。remove_punctuations()
string.punctuation
string
str.maketrans()
translate()
删除特殊字符和数字涉及从文本中删除任何非字母字符(例如符号、数字)。此步骤对于文本预处理非常有用,可以专注于文本内容,而不会干扰数字或其他非字母字符。
- import re
-
- def remove_special_characters_numbers(text):
- # Regular expression to remove non-alphabetic characters and numbers
- return re.sub(r'[^a-zA-Z\s]', '', text)
-
- # Test the function
- input_text = "Hello, my name is Saif Ali and my age is 25! I was born on 1997-01-10."
- output_text = remove_special_characters_numbers(input_text)
- print(output_text)
在上面的代码中,我们使用函数从输入文本中删除所有特殊字符和数字。该函数使用(正则表达式)模块中的方法和正则表达式来匹配任何不是大写或小写字母或空格的字符。然后,它将这些字符替换为空字符串,有效地将它们从文本中删除。remove_special_characters_numbers()
re.sub()
re
r'[^a-zA-Z\s]'
在处理从网页或 HTML 文档中提取的文本数据时,删除 HTML 标记非常重要。HTML 标记对文本内容没有贡献,需要将其删除以进行进一步的文本分析。
- import re
-
- def remove_html_tags(text):
- clean_text = re.sub(r'<.*?>', '', text)
- return clean_text
-
- # Test the function
- input_text = "<p>Hello, <b>my name</b> is <i>John</i>!</p>"
- output_text = remove_html_tags(input_text)
- print(output_text)
在上面的代码中,该函数使用正则表达式 () 从输入文本中删除所有 HTML 标记。正则表达式匹配以“<”开头,后跟任何字符 (“.*”)并以“>”结尾的任何模式。这将有效地删除任何 HTML 标记并保留文本内容。remove_html_tags()
re.sub()
r'<.*?>'
在处理来自网页或社交媒体的文本数据时,删除 URL 是一个常见的预处理步骤,其中 URL 不会向文本分析添加任何有意义的信息。
- import re
-
- def remove_urls(text):
- clean_text = re.sub(r'http\S+|www\S+', '', text)
- return clean_text
-
- # Test the function
- input_text = "Check out my LinkedIn account: https://www.linkedin.com/in/imsaifali/"
- output_text = remove_urls(input_text)
- print(output_text)
在上面的代码中,该函数使用正则表达式 () 从输入文本中删除任何 URL。正则表达式匹配任何以“http://”或“https://”开头的URL(http后跟非空格字符)或以“www”开头的URL。(www 后跟非空格字符)。这有效地从文本中删除了任何 URL。remove_urls()
re.sub()
r'http\S+|www\S+'
\S+
\S+
删除多余空格是一个文本预处理步骤,涉及删除文本中单词之间的任何不必要或过多的空格。这可确保文本干净且一致。
- import re
-
- def remove_extra_spaces(text):
- clean_text = re.sub(r'\s+', ' ', text)
- return clean_text.strip()
-
- # Test the function
- input_text = "Hello there, how are you?"
- output_text = remove_extra_spaces(input_text)
- print(output_text)
在上面的代码中,该函数使用正则表达式 () 删除一个或多个空格字符(空格、制表符、换行符)的任何序列,并将它们替换为单个空格。正则表达式匹配一个或多个空格字符。然后,该方法用于删除任何前导空格或尾随空格。remove_extra_spaces()
re.sub()
r'\s+'
strip()
扩展收缩是将单词的收缩形式(例如,“不要”,“不能”)转换为其完整形式(例如,“不要”,“不能”)的过程。此步骤对于标准化文本和避免 NLP 任务中的潜在歧义非常有用。
- contraction_mapping = {
- "ain't": "is not",
- "aren't": "are not",
- "can't": "cannot",
- "couldn't": "could not",
- "didn't": "did not",
- "doesn't": "does not",
- "don't": "do not",
- "hadn't": "had not",
- "hasn't": "has not",
- "haven't": "have not",
- "he's": "he is",
- "he'll": "he will",
- "he'd": "he would",
- "i've": "I have",
- "i'll": "I will",
- "i'd": "I would",
- "i'm": "I am",
- "isn't": "is not",
- "it's": "it is",
- "it'll": "it will",
- "it'd": "it would",
- "let's": "let us",
- "mightn't": "might not",
- "mustn't": "must not",
- "shan't": "shall not",
- "she's": "she is",
- "she'll": "she will",
- "she'd": "she would",
- "shouldn't": "should not",
- "that's": "that is",
- "there's": "there is",
- "they're": "they are",
- "they've": "they have",
- "they'll": "they will",
- "they'd": "they would",
- "we're": "we are",
- "we've": "we have",
- "we'll": "we will",
- "we'd": "we would",
- "weren't": "were not",
- "what's": "what is",
- "won't": "will not",
- "wouldn't": "would not",
- "you're": "you are",
- "you've": "you have",
- "you'll": "you will",
- "you'd": "you would",
- "isn't": "is not",
- "it's": "it is",
- "that's": "that is",
- "there's": "there is",
- "here's": "here is",
- "who's": "who is",
- "what's": "what is",
- "where's": "where is",
- "when's": "when is",
- "why's": "why is",
- "how's": "how is",
- }
-
- def expand_contractions(text):
- words = text.split()
- expanded_words = [contraction_mapping[word.lower()] if word.lower() in contraction_mapping else word for word in words]
- return ' '.join(expanded_words)
-
- # Test the function
- input_text = "I can't believe it's already Friday!"
- output_text = expand_contractions(input_text)
- print(output_text)
在上面的代码中,我们使用函数来扩展输入文本中的收缩。该函数利用包含常见收缩及其完整形式的字典。它将输入文本拆分为单词,并检查每个单词(小写)是否存在于 .如果是这样,它将用其完整形式替换合同形式。expand_contractions()
contraction_mapping
contraction_mapping
文本更正涉及修复文本数据中的常见拼写错误或其他错误。拼写检查和更正对于提高 NLP 任务的文本数据质量至关重要。
对于文本更正,我们将使用库,它为拼写检查和更正等文本处理任务提供了方便的界面。确保您已安装并安装。如果没有,请使用以下命令安装它们:TextBlob
textblob
nltk
pip install textblob nltk
现在,让我们更正文本:
- from textblob import TextBlob
-
- def correct_text(text):
- blob = TextBlob(text)
- corrected_text = blob.correct()
- return str(corrected_text)
-
- # Test the function
- input_text = "I am lerning NLP with Pyhton."
- output_text = correct_text(input_text)
- print(output_text)
在上面的代码中,我们使用函数来更正输入文本。该函数使用库中的类从输入文本创建对象。然后将该方法应用于对象,该对象会自动执行拼写更正和其他文本更正。correct_text()
TextBlob
textblob
TextBlob
correct()
TextBlob
标记化是将文本分解为单个单词或标记的过程。这是 NLP 中必不可少的预处理步骤,为进一步分析准备文本。我们将使用该库,它提供了各种标记化方法。确保您已安装。如果没有,请使用以下命令安装它:nltk
nltk
pip install nltk
现在,让我们执行标记化:
- import nltk
- nltk.download('punkt')
- from nltk.tokenize import word_tokenize
-
- def tokenize_text(text):
- return word_tokenize(text)
-
- # Test the function
- input_text = "The quick brown fox jumps over the lazy dog."
- output_tokens = tokenize_text(input_text)
- print(output_tokens)
在上面的代码中,我们使用函数来标记输入文本。该函数利用模块中的方法将文本拆分为单个单词(标记)。tokenize_text()
word_tokenize()
nltk.tokenize
停用词删除是一个文本预处理步骤,其中从文本中删除语义含义很少或没有语义的常用词(称为停用词),以减少干扰并专注于更有意义的单词。对于停用词删除,我们将使用该库,该库提供了各种语言的常见停用词列表。确保您已安装。如果没有,请使用以下命令安装它:nltk
nltk
pip install nltk
现在,让我们执行停用词删除:
- import nltk
- nltk.download('punkt')
- nltk.download('stopwords')
- from nltk.corpus import stopwords
- stop_words = set(stopwords.words('english'))
-
- def remove_stopwords(text):
- words = text.split()
- filtered_words = [word for word in words if word.lower() not in stop_words]
- return ' '.join(filtered_words)
-
- # Test the function
- input_text = "The quick brown fox jumps over the lazy dog."
- output_text = remove_stopwords(input_text)
- print(output_text)
在上面的代码中,我们使用函数从输入文本中删除停用词。该函数首先将文本拆分为单个单词,然后过滤掉从库中的语料库获取的英语停用词集中存在的单词。remove_stopwords()
stopwords
nltk
词干提取是一种文本预处理技术,旨在通过删除后缀将单词简化为其基本形式或根形式。这个过程有助于减少词汇量,并将同一单词的不同形式视为相同。对于词干分析,我们将使用该库,该库提供各种词干分析器,包括波特词干分析器。确保您已安装。如果没有,请使用以下命令安装它:nltk
nltk
pip install nltk
现在,让我们执行词干提取:
- import nltk
- nltk.download('punkt')
- from nltk.stem import PorterStemmer
-
- def perform_stemming(text):
- stemmer = PorterStemmer()
- words = text.split()
- stemmed_words = [stemmer.stem(word) for word in words]
- return ' '.join(stemmed_words)
-
- # Test the function
- input_text = "jumps jumping jumped"
- output_text = perform_stemming(input_text)
- print(output_text)
在上面的代码中,我们使用函数将词干提取应用于输入文本。该函数利用了来自模块,这是一种广泛使用的词干提取算法。它将输入文本拆分为单个单词,对每个单词应用词干提取,然后将词干词干连接回单个字符串。perform_stemming()
PorterStemmer
nltk.stem
词形还原是一种文本预处理技术,它使用词汇和形态分析将单词简化为其基本形式或根形式(引理)。与词干提取不同,词形还原可确保生成的单词是语言中的有效单词。对于词形还原,我们将使用库,它提供了一个 WordNet 词形还原器。确保您已安装。如果没有,请使用以下命令安装它:nltk
nltk
pip install nltk
现在,让我们执行词形还原:
- import nltk
- nltk.download('punkt')
- nltk.download('wordnet')
- from nltk.stem import WordNetLemmatizer
-
- def perform_lemmatization(text):
- lemmatizer = WordNetLemmatizer()
- words = text.split()
- lemmatized_words = [lemmatizer.lemmatize(word) for word in words]
- return ' '.join(lemmatized_words)
-
- # Test the function
- input_text = "jumps jumping jumped"
- output_text = perform_lemmatization(input_text)
- print(output_text)
在上面的代码中,我们使用函数将词形还原应用于输入文本。该函数利用来自模块,该模块基于WordNet词汇数据库。它将输入文本拆分为单个单词,对每个单词应用词形还原,然后将词形还原的单词连接回单个字符串。perform_lemmatization()
WordNetLemmatizer
nltk.stem
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。