gpt4 book ai didi

python - 使用 Python 计算 N 克

转载 作者:IT老高 更新时间:2023-10-28 20:35:23 25 4
gpt4 key购买 nike

我需要为包含如下文本的文本文件计算 Unigrams、BiGrams 和 Trigrams:

“仅在美国,囊性纤维化就影响了 30,000 名 child 和年轻人吸入盐水雾可以减少充满囊性纤维化患者气道的脓液和感染,尽管副作用包括令人讨厌的咳嗽和刺鼻的味道。这是本周发表在《新英格兰医学杂志》上的两项研究的结论。”

我从 Python 开始,使用了以下代码:

#!/usr/bin/env python
# File: n-gram.py
def N_Gram(N,text):
NList = [] # start with an empty list
if N> 1:
space = " " * (N-1) # add N - 1 spaces
text = space + text + space # add both in front and back
# append the slices [i:i+N] to NList
for i in range( len(text) - (N - 1) ):
NList.append(text[i:i+N])
return NList # return the list
# test code
for i in range(5):
print N_Gram(i+1,"text")
# more test code
nList = N_Gram(7,"Here is a lot of text to print")
for ngram in iter(nList):
print '"' + ngram + '"'

http://www.daniweb.com/software-development/python/threads/39109/generating-n-grams-from-a-word

但它适用于一个单词中的所有 n-gram,当我想要它来自单词之间的 CYSTIC 和 FIBROSIS 或 CYSTIC FIBROSIS 时。有人可以帮我解决这个问题吗?

最佳答案

来自 blog 的简短 Pythonesque 解决方案:

def find_ngrams(input_list, n):
return zip(*[input_list[i:] for i in range(n)])

用法:

>>> input_list = ['all', 'this', 'happened', 'more', 'or', 'less']
>>> find_ngrams(input_list, 1)
[('all',), ('this',), ('happened',), ('more',), ('or',), ('less',)]
>>> find_ngrams(input_list, 2)
[('all', 'this'), ('this', 'happened'), ('happened', 'more'), ('more', 'or'), ('or', 'less')]
>>> find_ngrams(input_list, 3))
[('all', 'this', 'happened'), ('this', 'happened', 'more'), ('happened', 'more', 'or'), ('more', 'or', 'less')]

关于python - 使用 Python 计算 N 克,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13423919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com