-2

我想了解 afinn 代码

from afinn import Afinn
from nltk.corpus import gutenberg
import textwrap
afinn = Afinn()
sentences = (" ".join(wordlist) for wordlist in gutenberg.sents('austen-sense.txt'))
scored_sentences = ((afinn.score(sent), sent) for sent in sentences)
sorted_sentences = sorted(scored_sentences)
print("\n".join(textwrap.wrap(sorted_sentences[0][1], 70)))

输出 : 因此 , 依附于 你 妹妹 , 是 不 值得 考虑 的 ; -- 带着 卑鄙 , 自私 , 残忍 -- 任何 愤怒 , 任何 轻蔑 的 表情 , 甚至 你 , 达什伍德 小姐 , 都 不能 谴责 .太多 -- 我 是 这样 做 的 , 试图 引起 她 的 关注 , 却 没想 还 .- 但 有一件事 对 我 来说 : 即使 在 自私 虚荣 的 可怕 状态 , 我 也不 知道 程度我冥想的伤害,因为那时我不知道爱是什么。

4

1 回答 1

1

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 .']
于 2019-09-18T18:09:31.020 回答