小编ama*_*anb的帖子

使用 spacy 删除停用词

我正在清理我的data frameSumcription 中的一个列,并尝试做 3 件事:

  1. 代币化
  2. 语义化
  3. 删除停用词

    import spacy        
    nlp = spacy.load('en_core_web_sm', parser=False, entity=False)        
    df['Tokens'] = df.Sumcription.apply(lambda x: nlp(x))    
    spacy_stopwords = spacy.lang.en.stop_words.STOP_WORDS        
    spacy_stopwords.add('attach')
    df['Lema_Token']  = df.Tokens.apply(lambda x: " ".join([token.lemma_ for token in x if token not in spacy_stopwords]))
    
    Run Code Online (Sandbox Code Playgroud)

但是,当我打印例如:

df.Lema_Token.iloc[8]
Run Code Online (Sandbox Code Playgroud)

输出中仍然包含单词 attach : attach poster on the wall because it is cool

为什么它不删除停用词?

我也试过这个:

df['Lema_Token_Test']  = df.Tokens.apply(lambda x: [token.lemma_ for token in x if token not in spacy_stopwords])
Run Code Online (Sandbox Code Playgroud)

但是 strattach仍然出现。

python nlp data-cleaning spacy python-3.7

7
推荐指数
1
解决办法
1万
查看次数

Pandas groupby:根据另一列中的值更改一列中的值

我会尽力解释我的问题。但我是 Pandas 新手,所以请耐心等待。我有一个 Pandas 数据框df

    Random_ID   Seq_ID  Type    Seq Token
0   8             1     User    First
1   8             2     Agent   Second
2   8             3     User    Second
3   8             4     User    Second
4   8             5     Agent   Second
5   13            1     User    First
6   13            2     Agent   Second
7   13            3     User    Second
8   13            4     Agent   Second
9   13            5     User    Second
10  13            6     Agent   Second
11  13            7     User    Second
12  13            8     Agent   Second
13  13            9 …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas pandas-groupby

6
推荐指数
1
解决办法
1万
查看次数

将多单词字符串拆分为包含字符串列表的 Pandas 系列的单个单词

我有一个 Pandas Dataframe,其列值作为字符串列表。每个列表可以有一个或多个字符串。对于包含多个单词的字符串,我想将它们拆分为单独的单词,以便每个列表仅包含单独的单词。在下面的数据框中,只有sent_tags列具有包含可变长度字符串的列表。

数据框

import pandas as pd    
pd.set_option('display.max_colwidth', -1)
df = pd.DataFrame({"fruit_tags": [["'apples'", "'oranges'", "'pears'"], ["'melons'", "'peaches'", "'kiwis'"]], "sent_tags":[["'apples'", "'sweeter than oranges'", "'pears sweeter than apples'"], ["'melons'", "'sweeter than peaches'", "'kiwis sweeter than melons'"]]})
print(df)  

    fruit_tags                        sent_tags
0   ['apples', 'oranges', 'pears']  ['apples', 'sweeter than oranges', 'pears sweeter than apples']
1   ['melons', 'peaches', 'kiwis']  ['melons', 'sweeter than peaches', 'kiwis sweeter than melons']
Run Code Online (Sandbox Code Playgroud)

我的尝试

我决定使用word_tokenizeNLTK 库将这些字符串分解为单独的单词。我确实获得了列表中特定选择的标记化单词,但无法将它们组合到每行的每个列表中:

from nltk.tokenize import word_tokenize
df['sent_tags'].str[1].str.strip("'").apply(lambda x:word_tokenize(x.lower()))
#Output
0    [sweeter, …
Run Code Online (Sandbox Code Playgroud)

python python-3.x pandas

4
推荐指数
1
解决办法
3794
查看次数

如何在字典中以最大值作为最大值来获取最大值?

我试图从我的字典中获取最大值,该字典有一个列表作为值,然后返回键和值。

我的字典看起来像这样:

d = {'Miami': [1, 12, 7, 12], 'New York': [21, 12, 1, 8]}
Run Code Online (Sandbox Code Playgroud)

我想得到答案:

New York 21
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

python dictionary

0
推荐指数
1
解决办法
40
查看次数