python - 如何总结对话中每个人的字数?

标签 python count sum nlp text-mining


我开始学习 Python,我正在尝试编写一个程序来导入一个文本文件,计算总字数,计算特定段落中的字数(由每个人说) participant, described by 'P1', 'P2' etc.), 从我的字数统计中排除这些词(即 'P1' 等),并单独打印段落。

感谢@James Hurford 我得到了这段代码:

words = None
with open('data.txt') as f:
   words = f.read().split()
total_words = len(words)
print 'Total words:', total_words

in_para = False
para_type = None
paragraph = list()
for word in words:
  if ('P1' in word or
      'P2' in word or
      'P3' in word ):
      if in_para == False:
         in_para = True
         para_type = word
      else:
         print 'Words in paragraph', para_type, ':', len(paragraph)
         print ' '.join(paragraph)
         del paragraph[:]
         para_type = word
  else:
    paragraph.append(word)
else:
  if in_para == True:
    print 'Words in last paragraph', para_type, ':', len(paragraph)
    print ' '.join(paragraph)
  else:
    print 'No words'

我的文本文件如下所示:

P1: Bla bla bla.

P2: Bla bla bla bla.

P1: Bla bla.

P3: Bla.

我需要做的下一部分是为每个参与者总结单词。我只能打印它们,但我不知道如何退回/重新使用它们。

除了总结每个参与者所说的所有单词外,我还需要一个新变量,其中包含每个参与者的字数统计,我可以稍后对其进行操作,例如

P1all = sum of words in paragraph

有没有办法将“you're”或“it's”等算作两个词?

有什么解决办法吗?

最佳答案

I would need a new variable with word count for each participant that I could manipulate later on

不,你需要一个 Counter (Python 2.7+,否则使用 defaultdict(int))将人员映射到字数。

from collections import Counter
#from collections import defaultdict

words_per_person = Counter()
#words_per_person = defaultdict(int)

for ln in inputfile:
    person, text = ln.split(':', 1)
    words_per_person[person] += len(text.split())

现在 words_per_person['P1'] 包含 P1 的单词数,假设 text.split() 是一个足够好的分词器为了你的目的。 (语言学家对的定义意见不一,所以你总是会得到一个近似值。)

关于python - 如何总结对话中每个人的字数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429845/

相关文章:

python - Django 身份验证如何与 SQL Server 配合使用?

python - 返回空迭代器而不是 None 是不是糟糕的 Python 风格?

python - 计算字典中项目的实例(Pandas)

sql - 一个(稍微复杂的)SQL 查询?

求整数和的 Python 函数

python - 从 Django 获取多个随机对象时,查询集如何工作?

python - For循环调用urllib.urlopen().getcode()很慢

swift - 如果 SKAction 重复 Action 计数结束

mysql - 从两个表中统计,并按照存在的SQL个数排序

c++ - 需要对结构容器中的字段进行总计