python pandas 搭上复数 "s" 的字数,为字数统计做准备

python pandas get ride of plural "s" in words to prepare for word count

我有以下 python pandas 数据框:

Question_ID | Customer_ID | Answer
    1           234         The team worked very hard ...
    2           234         All the teams have been working together ...

我将使用我的代码来计算答案栏中的字数。但事先,我想从单词 "teams" 中取出 "s",以便在上面的示例中我计算 team: 2 而不是 team:1 和 teams:1。

我怎样才能对所有单词执行此操作?

使用 str.replace 从任何以 's' 结尾的 3 个或更多字母单词中删除 s。

df.Answer.str.replace(r'(\w{2,})s\b', r'')

0                  The team worked very hard ...
1    All the team have been working together ...
Name: Answer, dtype: object

'{2,}' 指定 2 个或更多。与 's' 相结合确保您会错过 'is'。您可以将其设置为 '{3,}' 以确保您也跳过 'its'

您需要使用自然语言工具包提供的标记器(用于将句子分解为单词)和词形还原器(用于标准化单词形式)nltk:

import nltk
wnl = nltk.WordNetLemmatizer()
[wnl.lemmatize(word) for word in nltk.wordpunct_tokenize(sentence)]
# ['All', 'the', 'team', 'have', 'been', 'working', 'together']

试用 NTLK 工具包。特别是词干提取和词形还原。我从来没有亲自使用过它,但是 here 你可以试试看。

这是一些棘手的复数的例子,

its it's his quizzes fishes maths mathematics

变成

it it ' s hi quizz fish math mathemat

你可以看到它对 "his"(和 "mathematics")的处理很糟糕,但是你又可以有很多缩写的 "hellos"。这就是野兽的本性。