1号线
导入库
2号线
从 NLTK 导入 Gutenberg 库。
3号线
导入文本换行
4号线
实例化一个 Afinn 对象。
5号线
gutenberg.sents('austen-sense.txt')
是列表的列表。gutenberg.sents()
返回给定文件作为句子或话语的列表,每个都编码为单词字符串的列表。例如:gutenberg.sents('austen-sense.txt')[2]
,这是Sense and Sensibility中的第一个实际句子,是这样的:
['The', 'family', 'of', 'Dashwood', 'had', 'long', 'been', 'settled', 'in', 'Sussex', '.']
Afinn 是一种基于词表的情感分析方法,因此您需要一个列表,这就是为什么(" ".join(wordlist) for wordlist in gutenberg.sents('austen-sense.txt'))
要使用每个词表并重新创建句子的原因。这也是为什么标点符号前有空格的原因。加入后变成:
['The family of Dashwood had long been settled in Sussex .']
6号线
第 6 行创建一个元组列表,每个元组的第一项是 Afinn 给出的情感分数,第二项是句子。
(afinn.score(sent))
给出 wordlist 'sent' 的情绪分数. 您给出的示例中单词列表的分数是-18.0。我给世界列表的分数是0.0。对于句子(已发送)中的每个列表项,都会得出一个情绪分数(afinn.score(sent))
并将其与句子(已发送)配对。
7号线
第 7 行对“scored_sentences”列表进行排序,按每个元组中的第一项升序排序。
8号线
print 语句使用textwrap每行显示 70 个字符。Textwrap 将创建一个行列表,因此连接发生在换行符“\n”。它显示排序列表中的第一个句子,所以这是得分最高的句子。
没有加入,textwrap.wrap(sorted_sentences[0][1], 70)
看起来像这样:
['To attach myself to your sister , therefore , was not a thing to be',
'thought of ;-- and with a meanness , selfishness , cruelty -- which no',
'indignant , no contemptuous look , even of yours , Miss Dashwood , can',
'ever reprobate too much -- I was acting in this manner , trying to',
'engage her regard , without a thought of returning it .-- But one',
'thing may be said for me : even in that horrid state of selfish vanity',
', I did not know the extent of the injury I meditated , because I did',
'not THEN know what it was to love .']