Замените значения в DataFrame словарем pos_tags - PullRequest
0 голосов
/ 05 мая 2018

Здесь у меня есть Pandas Dataframe со столбцом body, который содержит тексты.

         body
0   David Beckham's dreams of kick starting his ow...
1   Ascension Island. Picture: NASA, via Wikicommo...
2   So far this downturn, almost 10,000 direct min...
3   \nHOUSTON - Wendy Davis continued to capitaliz...
4   If something can't go on for ever, it won't. -...
5   \nPublished 04/10/2014 | 02:30\nTaoiseach Enda...
6   Ebola is having catastrophic economic conseque...
7   A British man has been raped at the Oktoberfes...
8   \nA top fashion journalist has sharply critiqu...
9   All over Ontario, giant wind turbines are spro...
10  Geneva - The Red Cross said on Monday that Sud...
11  \nPop quiz: What do pickles, vinegar, tempeh, ...

... ...
2284 rows × 1 columns

Я хочу получить DataFrame, чтобы тексты в «теле» превращались в тег. И я делаю это в качестве основного случая:

from nltk import pos_tag
pog = dict()
for txt in df['body'][0:3].str.split():
    text = nltk.pos_tag(txt)
    for postag in text:
        pog[postag[0]] = postag[1]
print(pog)

Вывод:

{'David': 'NNP', "Beckham's": 'NNP', 'dreams': 'NNS', 'of': 'IN','kick': 'NN', 'starting': 'VBG', 'his': 'PRP$', 'own': 'JJ', 'American': 'JJ', 'soccer': 'NN', ...}

Тогда я написал:

df['body'] = df['body'].replace(pog)
print(df)

Вывод точно такой же, как у DataFrame выше, ничего не меняется. Моя мысль состоит в том, чтобы использовать словарь для замены слова с тегами в исходном кадре данных.

Мне просто интересно, почему, и если у кого-то есть лучшая идея заменить слова на теги, пожалуйста, покажите, спасибо.

1 Ответ

0 голосов
/ 05 мая 2018

В пандах вы можете связать apply функций для получения результата.

## sample data frame
df = pd.DataFrame({'senten': ['I am not dancing','You are playing']})

df['new_sent'] = (df['senten']
                  .apply(word_tokenize)
                  .apply(pos_tag)
                  .apply(lambda x: ' '.join([y[1] for y in x])))

print(df)

             senten        new_sent
0  I am not dancing  PRP VBP RB VBG
1   You are playing     PRP VBP VBG
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...