Python:寻找平均值



我是python新手,需要帮助查找平均值,例如:每句平均单词数,每个单词平均字符数,总单词数和句子数等。我有三个包含大量文本样本的文本文件。这是我目前掌握的信息。

sampleText1 = open("textFile1.txt")
split1 = sampleText1.split(" ")
words1 = len(split1)

这真的是我所有的。我在想,既然我必须为另外两个文本文档重用这些代码,也许我应该创建一个函数或类似的东西。我发现这个代码由Inbar Rose在Stack Overflow上发布。我应该类似地使用下面的代码吗?

def clean_up(word, punctuation="!"',;:.-?)([]<>*#n\"): 
    return word.lower().strip(punctuation) # you don't really need ".lower()"
def average_word_length(text): 
    cleaned_words = [clean_up(w) for w in (w for l in text for w in l.split())]
    return sum(map(len, cleaned_words))/len(cleaned_words) # Python2 use float
>>> average_word_length(['James Fennimore Coopern', 'Peter, Paul and Maryn'])

我在想我需要做这样的事情。有人能帮我找出这些平均值吗?另外,如果有人知道任何学习Python的好资源,请告诉我。我目前正在使用http://learnpythonthehardway.org/book/,可汗学院Python视频,以及Lynda.com上关于Python的一些视频。

这个问题是在寻求关于编码的建议,而不是寻找一个具体的bug。但是在这种情况下,建议是很难给出的,因为你的代码结构(你应该有一个函数来读取数据或多个?)实际上取决于许多其他的事情,你没有指定,如:多少文本(它可以很容易地适应内存?)你想避免在语料库上循环很多次吗?或者这没什么大不了的?),你要做多少次计算,你用它来做什么,等等。

文本量越大,这些问题就越微妙,可以有更微妙的回答。

现在,与"如何让这个工作"有点相关的是"我想要这个做什么"。作为一名数据科学家,我的建议是先在一个小样本上做一些工作,看看是否有用。

但是如果你想计算每句话的平均字数,请在一个小样本上尝试并迭代它,直到它得到你想要的:

for sentence in sampleText1.split("."):
    print sentence

这个看起来好吗?也许你要担心省略号……或不呢?如果它看起来不错,那么试着看看:

for sentence in sampleText1.split("."):
    print sentence.split(" ")

这是如何工作的?你想不想担心双空格?连字符呢?等等?如果这看起来不错,那么在

sentence_lengths = [len(sentence.split(" ")) for sentence in sampleText1.split(".")]
the_mean = 1. * sentence_lengths.sum() / len(sentence_lengths)
print "average sentence length: %s"%(the_mean)

最新更新