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

为什么我在逐行导入文本文件进行情感分析而不是使用硬编码的句子时会得到TypeError?

丁文轩
2023-03-14

我正试图从一个文本文件中逐行分析每个给定句子的情绪。每当我使用链接的第一个问题中的硬编码句子时,代码就起作用了。当我使用文本文件输入时,我得到TypeError

这与这里提出的问题有关。而文本文件代码的一行一行来自这个问题:

from pycorenlp import StanfordCoreNLP
nlp = StanfordCoreNLP('http://localhost:9000')
results = []    
with open("c:/nlp/test.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"]))

S[“索引”],

TypeError:列表索引必须是整数或切片,而不是字符串

共有1个答案

史钊
2023-03-14

我没有安装Stanfort-lib,所以我无法使用它的系统进行测试。但是,它返回的方式是让我知道您的结果变量的类型是“List of Dicts”或某种嵌套类型

总之我做了个测试

results = []    

with open("tester.txt","r") as f:
    for line in f.read().split('\n'):
        print("Line:" + line)
        sentences = [
        {
            "index":1,
            "word":line,
            "sentimentValue": "sentVal",
            "sentiment":"senti"
        }
    ]
    results.append(sentences) 

然后我构建了你的循环,并对其进行了一点调整以适应我的需要,比如:

for res in results:         
    for s in res:         
        print("%d: '%s': %s %s" % (
            s["index"], 
            " ".join(s["word"]),
            s["sentimentValue"], s["sentiment"]))
1: 'I   l o v e   y o u .': sentVal senti
1: 'I   h a t e   h i m .': sentVal senti
1: 'Y o u   a r e   n i c e .': sentVal senti
1: 'H e   i s   d u m b': sentVal senti

有了这些信息后,可以从循环开始遍历这些值,如果不知道嵌套值的类型,则调用anotehr打印类型。一直往下走,直到到达您想要使用的项目所在的层

最后要指出的一件事。在你链接的描述中,在注释中。在这里,他介绍了如何将文本传递到API中。在那里,他解释说API摆脱了切片和格式化,您将只发送整个文本。如果你没有得到结果,请记住这一点

 类似资料:
  • 本文向大家介绍使用Python编程进行Twitter情感分析。,包括了使用Python编程进行Twitter情感分析。的使用技巧和注意事项,需要的朋友参考一下 情感分析是估算通过书面文本或口头交流为特定事件提供反馈的人们的情绪的过程。当然,口头交流也必须转换为书面文本,以便可以通过python程序进行分析。人们表达的情绪可能是正面的也可能是负面的。通过为情感文本中的不同单词分配权重,我们可以计算出

  • 我需要使用斯坦福NLP工具对关于特定主题的新闻文章进行情感分析。 这样的工具只允许基于句子的情感分析,而我想提取关于我的主题的整个文章的情感评价。 例如,如果我的主题是苹果,我想知道关于苹果的新闻文章的观点。 另一方面,将我的句子过滤到只包含Apple这个词的句子中,会遗漏类似“Apple的产品A很好。但是,它缺乏以下关键功能:...”的文章。在这种情况下,如果我只使用包含Apple这个词的句子,

  • 我使用Eclipse用java编写了一个很酷的程序。当我在eclipse中运行它时,它完全按照预期工作。我将它导出为一个jar文件,这样我就可以使用Launch4j将它转换为一个可执行文件(.exe文件扩展名),我成功地完成了,但是现在当我试图打开可执行文件时,它说程序不兼容。我尝试在命令行编译代码,当我键入“Java计算器”试图运行程序时,它运行得很好。所以我的问题是为什么可执行文件不能工作?任

  • 问题内容: 因此,我一直在编写一个简单的3D GUI应用程序,旨在让用户只需双击JAR文件即可使用。在将其放入JAR文件之前,它可以正常工作,并且在命令提示符下运行时(在jar文件的目录中键入“ java -jar Modeler.jar”),可以在JAR文件中使其完美运行。但是,当我双击它时,什么也没有发生。它运行完美,没有命令提示符下的错误。我从经验中知道,没有显示启动时的崩溃报告,因为控制台

  • 我想用目录中的文件名制作.txt文件。我不能使用java.io,只能使用java.nio,所以我无法逐行写入字符串。在.txt中,我只保存了最后一个字符串。请帮忙

  • 我与Wildfly和OpenJPA合作。我有一个乐观锁例外的情况。 我得到的错误消息是: 00:08:29373警告[com.arjuna.ats.arjuna](默认任务-39)arjuna01225:TwoPhaseCoordinator。beforeCompletion-SynchronizationImple失败 :org.apache.openjpa.persistence.乐观锁定异常