WedX - журнал о программировании и компьютерных науках

Списки в Python (с использованием NLTK)

Я пытаюсь составить список списков в виде [[(the, cat), (cat, with), (with, fur)] [(the, dog), (dog, with), (with, мяч).......и т.д.] из текстового файла с предложениями в таких строках, как:

кот с мехом\nсобака с мячом\n

Проблема, с которой я столкнулся, заключается в том, что каким-то образом, когда я читаю строки в файле, слово за словом, создавая кортежи (метка переменной) и создавая окончательный список (переменное соединение), есть пустые экземпляры, когда соединение переходит в 0 , Ну, на самом деле не 0, но список отображается как [[], [], []]

Это код для той части программы: с open('corpus.txt', 'r') как f:

with open('corpus.txt', 'r') as f:
    for line in f:
        cnt = 0
        sa = nltk.word_tokenize(line)
        label[:] = []

        for i in sa:
            words.append(i)
            if cnt>0:
                try: label +=[(prev , i)]
                except: NameError
            prev = i 
            cnt = cnt + 1

        if label != []:
            connection += [label]
            print connection

Я надеюсь, что кто-то понимает мою проблему, потому что это сводит меня с ума, и у меня мало времени. Я просто хочу знать, что я здесь делаю неправильно, чтобы я мог обновлять свой список подключений в каждом цикле, не теряя то, что я сохранил раньше.

Спасибо за вашу помощь

29.10.2013

  • Можно ли с уверенностью сказать, что у вас есть список предложений, где каждое предложение представлено в виде списка слов, и вы хотите получить список биграмм в каждом предложении? 29.10.2013
  • Точно, не знал слова биграмма, так что да, так было легче сказать :) PS: На самом деле я хочу биграмму всего файла, но разделенную на «подсписки», например [[(a1, a2), (a2, a3) ],[(b1,b2) ,(b2,b3)] 29.10.2013

Ответы:


1

У меня не установлен NLTK, но посмотрите, сработает ли это для вас:

with open('corpus.txt', 'r') as f:
    answer = []
    for line in f:
        cnt = 0
        sa = nltk.word_tokenize(line)
        answer.append([tuple([char, sa[i+1]]) for i,char in enumerate(sa[:-1])])
29.10.2013
  • OMG Спасибо, ха-ха, это сработало так хорошо, что я могу продолжить кодирование! ...10000 Спасибо вам, сэр! 29.10.2013
  • @FranciscoArriagadaArroyo: ЛОЛ! Рад помочь. Удачи с остальной частью вашей программы 29.10.2013

  • 2

    Вы можете использовать nltk.bigrams для получения своих кортежей, не беспокоясь о том, чтобы получить правильные граничные условия. Если words — это список слов в предложении, вы получите все биграммы с

    bigrams = nltk.bigrams(words)
    
    01.11.2013
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]