Показать прогресс в лемматизации - PullRequest
0 голосов
/ 06 января 2019

следующий скрипт используется для лемматизации заданного входного столбца с текстом:

%%time
import pandas as pd
from gensim.utils import lemmatize
from gensim.parsing.preprocessing import STOPWORDS
STOPWORDS = list(STOPWORDS)

data = pd.read_csv('https://pastebin.com/raw/0SEv1RMf')

def lemmatization(s):
    result = []
    # lowercase, tokenize, remove stopwords, len>3, lemmatize
    for token in lemmatize(s, stopwords=STOPWORDS, min_length=3):
        result.append(token.decode('utf-8').split('/')[0])
    # print(len(result)) <- This didn't work.
    return result

X_train = data.apply(lambda r: lemmatization(r['text']), axis=1)
print(X_train)

Вопрос:

Как распечатать ход выполнения лемматизации?

1 Ответ

0 голосов
/ 06 января 2019

Вы можете передать переменную в функцию лемматизации, чтобы отследить, сколько раз она была вызвана, и затем печатать ее каждые 1000 итераций или около того. Я поместил его в список ниже, чтобы int можно было передавать по ссылке, а не по значению.

%%time
import pandas as pd
from gensim.utils import lemmatize
from gensim.parsing.preprocessing import STOPWORDS
STOPWORDS = list(STOPWORDS)

data = pd.read_csv('https://pastebin.com/raw/0SEv1RMf')

iteration_count = [0]

def lemmatization(s, iteration_count):
    result = []
    # lowercase, tokenize, remove stopwords, len>3, lemmatize
    for token in lemmatize(s, stopwords=STOPWORDS, min_length=3):
        result.append(token.decode('utf-8').split('/')[0])
    # print(len(result)) <- This didn't work.

    iteration_count[0] += 1

    if iteration_count[0] % 1000 == 0:
        print(iteration_count[0])

    return result

X_train = data.apply(lambda r: lemmatization(r['text'], iteration_count), axis=1)
print(X_train)
...