当前位置: 首页 > 知识库问答 >
问题:

如何遍历文本文件的每一行并使用python获取这些行的情绪?

范稳
2023-03-14

目前,我正在研究情绪分析部分。为此,我更喜欢使用python的Standford Core NLP库。我能够使用以下代码获取每个句子的情绪:从pycorenlp导入斯坦福核心NLP

nlp = StanfordCoreNLP('http://localhost:9000')
res = nlp.annotate("I love you. I hate him. You are nice. He is dumb",
                   properties={
                       'annotators': 'sentiment',
                       'outputFormat': 'json',
                       'timeout': 1000,
                   })
for s in res["sentences"]:
    print("%d: '%s': %s %s" % (
        s["index"],
        " ".join([t["word"] for t in s["tokens"]]),
        s["sentimentValue"], s["sentiment"]))

但是,我的要求是,我有一个文本文件,其中包含大约100个句子,并用新行分隔。

所以,我试着用下面的代码打开一个文本文件,阅读句子,找出每个句子的意思。

from pycorenlp import StanfordCoreNLP

nlp = StanfordCoreNLP('http://localhost:9000')

with open("/Users/abc/Desktop/test_data.txt","r") as f:
    for line in f.read().split('\n'):
        print("Line:" + line)
        res = nlp.annotate(line,
                   properties={
                       'annotators': 'sentiment',
                       'outputFormat': 'json',
                       'timeout': 1000,
                   })
for s in res["sentences"]:
    print("%d: '%s': %s %s" % (
        s["index"],
        " ".join([t["word"] for t in s["tokens"]]),
        s["sentimentValue"], s["sentiment"]))

但是,不知何故,文本文件的所有句子都被覆盖了,我得到了最后一句话的情绪。因为,我是 python 的新手,任何人都可以帮助我解决同样的事情......

共有1个答案

魏澄邈
2023-03-14

我会试一试,但正如我评论的那样,我并不真正合格,这段代码将未经测试。添加或更改的行标有 #

from pycorenlp import StanfordCoreNLP

nlp = StanfordCoreNLP('http://localhost:9000')

results = []     # <<<<<<

with open("/Users/abc/Desktop/test_data.txt","r") as f:
    for line in f.read().split('\n'):
        print("Line:" + line)
        res = nlp.annotate(line,
                   properties={
                       'annotators': 'sentiment',
                       'outputFormat': 'json',
                       'timeout': 1000,
                   })
        results.append(res)      # <<<<<<

for res in results:              # <<<<<<
    s = res["sentences"]         # <<<<<<
    print("%d: '%s': %s %s" % (
        s["index"], 
        " ".join([t["word"] for t in s["tokens"]]),
        s["sentimentValue"], s["sentiment"]))

我认为f.read()中第一行的< code>。split('\n'):可能可以替换为f:中更简单的< code >行,但是在没有看到您的输入文件之前,我不能确定。

 类似资料:
  • 问题内容: 首先,我是Python的新手,确实搜索了答案,但是没有运气。到目前为止,我发现的内容只返回一行,就像下面的代码一样。我尝试了其他解决方案,例如,但总是只能返回一行。 我有一个名为包含数据行的文件: 我有以下代码: 在这种情况下,它仅打印 “这是第四行”。 我知道为什么,但是如何从这里拿走并打印第4、7、10、13行…? 问题答案: 的返回值是一个迭代器(因此是可迭代的),因此您可以将其

  • 问题内容: 这个问题已经在这里有了答案 : 第二次遍历文件不起作用 (4个答案) 去年关闭。 我有一个文件,其中某些名称逐行列出。 现在,我试图遍历这些内容,但是我无法这样做。 file.readlines()将文件的行打印为列表。所以我得到这个: 但是,当我遍历此列表时,我无法这样做。 另外,当我将其分配给倒数第二行中的变量“ topology_list”并打印时。它给了我一个空的清单。 所以我

  • 问题内容: 我正在尝试阅读文本文件每一行中列出的问题,然后将每一行添加到数组中,以便以后可以分别调用它们。我几乎肯定可以用Java来做,但是我不确定如何去做。 我确实弄清楚了如何读取整个文本文件并将其全部设置为字符串: 尽管与此无关,但正如我提到的,这是一个包含问题的文件。如果我能解决此问题,则将获得另一个文件来存放所有问题的答案,然后对该文件执行相同的操作。 有人知道这样做的方法不是太复杂吗?如

  • 问题内容: 在Python中,如何读取二进制文件并在该文件的每个字节上循环? 问题答案: Python 2.4及更早版本 Python 2.5-2.7 请注意,with语句在2.5以下的Python版本中不可用。要在v 2.5中使用它,你需要导入它: 在2.6中是不需要的。 Python 3 在Python 3中,这有点不同。我们将不再以字节模式而是字节对象从流中获取原始字符,因此我们需要更改条件

  • 问题内容: 我正在尝试遍历文件夹和所有子文件夹以查找某些文件类型的所有文件-例如,仅.mp4,.avi,.wmv。 这是我现在拥有的,它遍历所有文件类型: 谢谢! 问题答案: 您可以使用which采取路径并将文件扩展名从其末尾分割:

  • 问题内容: 为了下载文件,我正在创建一个urlopen对象(urllib2类)并分块读取它。 我想多次连接到服务器,并在六个不同的会话中下载文件。这样做,下载速度应该会更快。许多下载管理器都具有此功能。 我考虑过在每次会话中指定要下载的文件部分,并以某种方式在同一时间处理所有会话。我不确定如何实现这一目标。 问题答案: 听起来您想使用可用的HTTP Range 风格之一。 编辑 更新的链接以指向w

  • 问题内容: 我正在使用jQuery动态创建下表…执行代码后,我得到的表如下: 我曾经这样迭代表: 通过使用上面的查询我收到第一行单元格值仅…帮助我与jQuery将通过该表的完整行迭代,并在获得该行的单元格值和。 问题答案: 而不是$ this 证明_1: 证明_2:

  • 问题内容: 我将背景色应用到了标签,标签上也设置了左右。问题是:仅当将文本包裹在多行上时,才应用于的左(行)和右(行),而不应用于每行的左(行)和右(行)。 如何将左和右应用于 中间 线? 问题答案: 您可以使用值为的属性。 每个框片段都使用指定的边框进行独立渲染,并用边距和边距包裹每个片段。边界半径,边界图像和框阴影分别应用于每个片段。在每个片段中独立绘制背景,这意味着具有背景重复:不重复的背景