从带有熊猫的字符串中生成N克

San*_*ndy 4 python nltk dataframe pandas

我有一个df像这样的DataFrame :

Pattern    String                                       
101        hi, how are you?
104        what are you doing?
108        Python is good to learn.
Run Code Online (Sandbox Code Playgroud)

我想为字符串列创建ngrams。我已经使用split()和创建了unigramstack()

new= df.String.str.split(expand=True).stack()
Run Code Online (Sandbox Code Playgroud)

但是,我想创建ngram(bi,tri,quad等)

cs9*_*s95 5

对您的文本列进行一些预处理,然后进行一些平移+串联:

# generate unigrams 
unigrams  = (
    df['String'].str.lower()
                .str.replace(r'[^a-z\s]', '')
                .str.split(expand=True)
                .stack())

# generate bigrams by concatenating unigram columns
bigrams = unigrams + ' ' + unigrams.shift(-1)
# generate trigrams by concatenating unigram and bigram columns
trigrams = bigrams + ' ' + unigrams.shift(-2)

# concatenate all series vertically, and remove NaNs
pd.concat([unigrams, bigrams, trigrams]).dropna().reset_index(drop=True)
Run Code Online (Sandbox Code Playgroud)

0                   hi
1                  how
2                  are
3                  you
4                 what
5                  are
6                  you
7                doing
8               python
9                   is
10                good
11                  to
12               learn
13              hi how
14             how are
15             are you
16            you what
17            what are
18             are you
19           you doing
20        doing python
21           python is
22             is good
23             good to
24            to learn
25          hi how are
26         how are you
27        are you what
28        you what are
29        what are you
30       are you doing
31    you doing python
32     doing python is
33      python is good
34          is good to
35       good to learn
dtype: object
Run Code Online (Sandbox Code Playgroud)