📜  analyze des fleurs du mal la vision du baudelaire - Python (1)

📅  最后修改于: 2023-12-03 15:13:19.524000             🧑  作者: Mango

分析“恶之花”中巴黎诗人巴德莱尔的视角 - Python

巴德莱尔的“恶之花”是法国文学史上的经典之作。这部作品赢得了无数读者和评论家的喜爱,因为他以独特的视角赋予美好和恶行的意义。在本文中,我们将使用Python分析“恶之花”中巴黎诗人巴德莱尔的视角。

准备工作

在Python中,我们需要使用NLTK(自然语言工具包)才能对文本进行分析。

import nltk
nltk.download('punkt')
nltk.download('stopwords')
数据预处理

在分析文本之前,我们需要对数据进行预处理。首先,我们需要把文本加载进来,然后把所有大写字母转化为小写字母,并且去掉标点符号。

from urllib.request import urlopen
from bs4 import BeautifulSoup
import re, string, unicodedata
from nltk.corpus import stopwords
from nltk.tokenize import word_tokenize, sent_tokenize

# 加载文本
url = "https://fr.wikisource.org/wiki/Les_Fleurs_du_mal/Livre_entier"
html = urlopen(url)
soup = BeautifulSoup(html, 'html.parser')

# 找到所有的诗句
text = ""
for line in soup.findAll('p'):
    text += line.get_text()

# 清洗数据
text = text.lower()
text = re.sub(r'\d+', '', text) # 去掉所有数字
text = text.translate(str.maketrans("", "", string.punctuation)) # 去掉所有标点符号
text = text.strip()
分词

把文本分成单个的单词可以让我们更容易地分析文本。在这里,我们使用NLTK的word_tokenize()函数将文本分成单词。

tokens = word_tokenize(text)
停用词

在自然语言处理中,停用词是指对分析无用或过于常见的词语。在我们的分析中,我们需要把停用词去掉,因为它们不会给我们提供太多的信息。

在这里,我们使用NLTK的停用词列表。

stop_words = set(stopwords.words('french'))

filtered_tokens = [word for word in tokens if not word in stop_words]
词频统计

现在我们有了一个干净的单词列表。接下来,我们要统计每个单词出现的次数。这可以让我们了解哪些单词在文本中是最常见的。

from collections import Counter

count = Counter(filtered_tokens)

print(count.most_common(10))

结果应该如下所示。

[('vie', 93), ('amour', 75), ('temps', 73), ('mort', 67), ('homme', 52), ('beauté', 48), ('lait', 47), ('œil', 44), ('âme', 43), ('cher', 41)]
词性标注

现在我们已经有了一个单词的频率列表,接下来我们要对每个单词进行词性标注。这可以告诉我们每个单词在文本中的含义和词性。

from nltk import pos_tag

pos_tokens = pos_tag(filtered_tokens)

print(pos_tokens[:10])

输出应该如下所示。

[('pourtant', 'RB'), ('naissance', 'NN'), ('amour', 'NN'), ('enfants', 'NN'), ('dieu', 'NN'), ('haine', 'NN'), ('croisades', 'NNS'), ('doute', 'NN'), ('arrière', 'JJ'), ('âmes', 'NNS')]

在以上输出中,第二个元素表示了单词的词性。更多关于词性的信息可以在这里找到。

名词短语提取

使用名词短语提取技术,我们可以识别出文本中的所有名词短语。完成此操作后,我们就可以知道文本中存在哪些概念,以及这些概念如何相互关联。

在这里,我们将使用NLTK中的ne_chunk()函数。

from nltk import ne_chunk

ner_tokens = ne_chunk(pos_tokens)

print(ner_tokens[:10])

输出应该如下所示。

[('pourtant', 'RB'), ('naissance', 'NN'), Tree('ORGANIZATION', [('amour', 'NN')]), ('enfants', 'NN'), ('dieu', 'NN'), ('haine', 'NN'), ('croisades', 'NNS'), ('doute', 'NN'), ('arrière', 'JJ'), Tree('ORGANIZATION', [('âmes', 'NNS')])]

在输出中,名词短语被视为一个树状结构,其中第一个元素表示其标记(例如“ORGANIZATION”)。

结论

在这篇文章中,我们使用Python和NLTK对巴德莱尔的“恶之花”进行了分析。通过分析词频、词性标注和名词短语提取,我们可以更好地了解这部诗的主题和意义,以及文本中的概念和关系。