Определить язык и сравнить со списком слов - PullRequest
1 голос
/ 01 марта 2020

Набор в моем коде не работает, когда я добавляю его в свой код, который определяет язык.

Код, который у меня есть, предназначен для определения языка (который «de» и правильно определен), а затем, если язык «de», он будет сравнивать слова в файле со словами в другом файл.

Когда у меня есть эти коды в качестве отдельных кодов, они оба работают, но когда они у меня есть, вывод неправильный.

Ожидаемый вывод {'mehr', 'Angebot'} и фактический вывод set ()

Код:

from langdetect import detect

f = open("4.txt", mode="r", encoding="utf-8")
read = f.read()

lang = detect(read)

#print(lang)

if lang == 'de':
    de = open("positive_words_de.txt")

    words1 = f.read().split()
    words2 = de.read().split()
    words = set(words1) & set(words2)
    print(words)

f.close()
de.close()

Вот текст в файле 4.txt

Re: stuttgarter-zeitung.de Bei der Bahn bekomme ich für mehr Geld mehr Service. Ich bin zuversichtlich, dass ein kleines Unternehmen sich um ein gutes Angebot für Ihre Kunden kümmern werden. Wir werden sehen...

Слова в файле positive_words_de.txt - это просто список слов с положительной принадлежностью на немецком языке, два слова соответствуют словам в 4 Файл .txt, как отмечено выше.

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Итак, проблема была в этой строке:

words1 = f.read().split()

Если я удаляю read = f.read() или меняю words1 = f.read().split() на words1 = read.split, код работает просто отлично. words1 - пустой список, когда я запускаю оригинальный код.

0 голосов
/ 01 марта 2020

Вы можете попробовать:

from langdetect import detect
with open("4.txt", mode="r", encoding="utf-8") as f:
    read = f.read().strip()

lang = detect(read)
print(lang)

if lang == 'de':
    # https://github.com/socialsensor/computational-verification/raw/master/resources/files/positive-words-german.txt
    with open("positive_words_de.txt") as de:
        de_positive = de.read()
    words1 = [x.strip().lower() for x in de.split("\n")]
    words2 = [x.strip().lower() for x in de_positive.split("\n")]
    words = set(words1) & set(words2)
    print(words)

#de
#{'bahn'}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...