python处理词组的单复数和重排列

词组变换处理

  • 单复数变换
    • 单词单复数
    • 词组单复数
  • 词组重组
  • 单复数其他问题
  • 提供一个统计词频的方法

单复数变换

单词单复数

接到了新需求没啥想法,先问问AI:
python处理词组的单复数和重排列_第1张图片
python处理词组的单复数和重排列_第2张图片

整理AI结果(原输入定义函数传参,这里直接设置输入):

# 返回某个词的单数或者复数  词组只能返回最后一个单词的复数形式
keyword = 'dog bowl'
p = inflect.engine()
keyword_var = []
if p.singular_noun(keyword) == False:
    keyword_var.append((p.plural(keyword)))
else:
    keyword_var.append(p.singular_noun(keyword))
print(keyword_var)

python处理词组的单复数和重排列_第3张图片

词组单复数

我需要变换的是数组,继续问AI:
python处理词组的单复数和重排列_第4张图片
AI给出的代码如果输入就是复数会变成False,基于它给的代码我进行了修改:

import inflect
from itertools import product
keyword = 'dog bowl'
p = inflect.engine()
phrase =keyword.split()
plural_forms = []
for word in phrase:
    psigle = p.plural(word)
    pplural = p.singular_noun(word)
    if psigle == False:
        psigle = word
    if  pplural == False:
        pplural = word        
    plural_forms.append([psigle, pplural])
combinations = list(product(*plural_forms))
combinations_word=[]
for c in combinations:
    combinations_word.append(' '.join(c))
print(combinations_word)

python处理词组的单复数和重排列_第5张图片
python处理词组的单复数和重排列_第6张图片

词组重组

combinations函数返回的是可迭代元素中的一个组合
combinations(p,r) p是一个list参数,r是数字,r长度的tuple,按顺序排列,没有重复元素

permutations函数返回的是可迭代元素中的一个排列组合(全排列)。
permutations(p,r) p是一个list参数,r是数字,r长度的tuple,所有可能的顺序,没有重复的元素

import itertools

lst = [1, 2, 3]
permutations_lst = list(itertools.permutations(lst, 2))  #排列
combinations_list = list(itertools.combinations(lst, 2))  #组合
print(permutations_lst) 
print(combinations_list)

python处理词组的单复数和重排列_第7张图片

单复数其他问题

发现之前的代码在变换bags这种复数形式的词的时候会报错:
python处理词组的单复数和重排列_第8张图片
加了判断单复数返回值相等时取本身的值,但遇到men时又报错了。
最后修改如下:

def get_word_s(word):
    singular = p.singular_noun(word)
    if not singular:
        singular = word
    if singular == word:
        plural = p.plural(word)
    else:
        plural = word

    return singular, plural

python处理词组的单复数和重排列_第9张图片

提供一个统计词频的方法

具体可以参考:https://blog.csdn.net/chl183/article/details/106956807
具体可以参考: https://blog.csdn.net/chl183/article/details/106956807
python处理词组的单复数和重排列_第10张图片

你可能感兴趣的:(python文本分析,python,开发语言)