Python 计算每个角色在任何形式的电影剧本中所说的字数

Python 计算每个角色在任何形式的电影剧本中所说的字数,python,nlp,nltk,Python,Nlp,Nltk,我正试图计算每个角色在任何形式的电影/电视脚本中所说的单词数 我采用了以下代码: 将open('path/10_Things_Hate_About_You.txt','r')作为f: s=f.read().split('\n') 演讲者=''#当前演讲者 单词=0#行中的单词数 单词计数={}说话人的口述和他们说的单词数 对于s中的行: 如果重新匹配('^[]{33}[^]{1,}.*',行):#发言者姓名 speaker=line.split(“(”)[0][33:][.strip() 打印(

我正试图计算每个角色在任何形式的电影/电视脚本中所说的单词数

我采用了以下代码:

将open('path/10_Things_Hate_About_You.txt','r')作为f:
s=f.read().split('\n')
演讲者=''#当前演讲者
单词=0#行中的单词数
单词计数={}说话人的口述和他们说的单词数
对于s中的行:
如果重新匹配('^[]{33}[^]{1,}.*',行):#发言者姓名
speaker=line.split(“(”)[0][33:][.strip()
打印(扬声器)
如果重新匹配('^[]{20}[^]{1,}.*',行):#对话行
打印(行)
words=len(line.split())
如果扬声器在word_计数中:
字数[说话人]+=字数
其他:
字数[说话人]=字数
但这只适用于一种严格的脚本格式(其中,演讲者的缩进=33,对话行的缩进=20)

我还尝试使用nltk包,如下所示:

对于s中的行:
缩进=len(line)-len(line.lstrip())

if len(line.split())0和“您编写的任何内容都无法证明适用于任何内容的任何格式。由于有无数种可能的格式可用于构建电影脚本,因此一种方法是将脚本调整为多种格式,并找到一种方法来判断脚本是否可解析某种格式;如果不可解析,请将其记录在某个位置并升级进一步阅读代码。机器学习在这里可能也很有趣,尽管可能有些过火。谢谢你的灵感!你也提到了机器学习,你有什么想法来使用机器学习吗?谢谢!你能发布一个可复制的示例,并解释为什么“这仍然不能很好地工作”?你写的任何东西都不可能适用于任何格式的任何东西。因为有无数种可能的格式可以用来构造电影脚本,一种方法是将脚本调整为几种格式,并找到一种方法来判断脚本是否可以解析某种格式;如果不可以,将其记录在某个地方并更新e代码更进一步。机器学习在这里可能也很有趣,尽管可能有些过火。谢谢你的灵感!你也提到了机器学习,你有什么想法来进行机器学习吗?谢谢!你能发布一个可复制的例子,并解释为什么“这仍然不能很好地工作”?