Как перебрать каждую строку текстового файла и получить представление об этих строках, используя python? - PullRequest
0 голосов
/ 04 сентября 2018

В настоящее время я работаю над анализом настроений. Для этого я предпочел использовать библиотеку Standford Core NLP с использованием Python. Я могу получить настроение для каждого предложения, используя следующий код: из pycorenlp import StanfordCoreNLP

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 Ответ

0 голосов
/ 04 сентября 2018

Я сделаю удар, но, как я уже прокомментировал, я не совсем квалифицирован, и этот код не будет проверен. Добавленные или измененные строки помечены # <<<<<<.

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"]))

Я бы предположил, что for line in f.read().split('\n'):, вероятно, можно заменить более простым for line in f:, но я не могу быть уверен, не увидев ваш входной файл.

...