[原创]求分析汉语平均句长工具!!

guoguolily

初级会员
我想求一个分析汉语平均句长的工具,哪位大虾帮帮忙啊!!着急ing!!many thanks!!
 

动态语法

管理员
Staff member
回复:[原创]求分析汉语平均句长工具!!

先说说你的句子指的是什么,是不是带 。 ! 和 ?的语言单位而且只是这些单位?
如果是,先算算有多少个字/句,再算算有多少个。 ! 和 ?,两个数字相除就差不多了吧?
 

guoguolily

初级会员
楼上说有道理,可是要是进行大篇幅的文章的平均句长的分析,人工还是很麻烦吧?所以想要个工具阿,直接能求出来的阿,哈哈……,谢谢阿!!thanks all the same!
 

laohong

管理员
Staff member
请思考一下:

你的句长是要按字算还是按词算?为什么要这样做?有什么理论根据?之所以这样问是因为算法不同结论会有很大差别。下面是几个从我的语料中提取的结果,大家一起研究一下。同样是长度为5个汉字的句子,按词算句子的长度却有2、3、4、5个词之分。

第一栏是 Length by word, 第二栏是 Length by character, 第三栏是经过分词后的句子。

2 5 为什么 开枪
2 5 为什么 没有
2 5 去 马来西亚
2 5 这样 怎么办

3 5 在 什么 地方
3 5 沙滩 可以 玩
3 5 英文 怎么 讲
3 5 这么 厉害 呀
3 5 排队 做 什么

4 5 那 只 狼 笨蛋
4 5 所以 他 就 跑
4 5 就 很 高兴 喽
4 5 你 拿 着 这个

5 5 这 两 个 人 呢
5 5 拉 她 的 手 呀
5 5 这 是 几 个 人
5 5 那 个 人 是 谁
 

cncorpus

普通会员
本人对汉语的句长也感兴趣。有兴趣的不妨讨论一下如何从纯计算的角度定义/如何判断汉语中的句子。下面是一点想法:

1)句子结尾的标点识别符为:

!
?
......

2) 句子开头为:汉字, 标点符号如“,等等。
3)句子长度如果以单词(word)来计算恐怕仁者见仁智者见智。以单字来计算各种软件会更consisitent一点。
 

xusun575

高级会员
回复:[原创]求分析汉语平均句长工具!!

以下是引用 cncorpus2006-4-12 21:38:47 的发言:
本人对汉语的句长也感兴趣。有兴趣的不妨讨论一下如何从纯计算的角度定义/如何判断汉语中的句子。下面是一点想法:

1)句子结尾的标点识别符为:

!
?
......

2) 句子开头为:汉字, 标点符号如“,等等。
3)句子长度如果以单词(word)来计算恐怕仁者见仁智者见智。以单字来计算各种软件会更consisitent一点。
窃以为,计算中,用结尾标识“。!?......”等,但以排除引号' ”'为好,以免重复计数。至于词或字,见仁见智,若标准统一,能自圆其说即可。
 

guoguolily

初级会员
好,谢谢大家,我终于会弄了,不过大家提出的问题,我还要好好思考一下,谢谢大家了!!
 

动态语法

管理员
Staff member
回复:[原创]求分析汉语平均句长工具!!

1) 我前面说的是方法问题,不是要你用手工计算. 用Concordance或 Wordlist都可以.

2) 做这类计算最好同时考虑字和词两种汉语单位.

3) 定义句子标志最好不要重复(引号和别的符号会重复).

4) 计算字\词总数时要排除标点符号的数量.

5) 要确认WordSmith Tools和其它软件在计算"句子"时用的单位是跟你自己的定义相符.
你在跟别人比较时也要确认大家用的是同样的单位. 不然的话这种比较是没有太大意义的.
 

李亮1975重庆

语料库快乐军政委
写一行VBA代码,自动计算中文平均句长(汉字数量)

写一行VBA代码,自动计算中文平均句长(汉字数量)

把一个或一系列的txt文件从菜单上的“插入”的“文件”而插入到某个空白Word文件中。Office的Word已经内置了英语的句子数量和单词数量和每个句子的单词数量的“对象模型”与“配套函数”,汉语的句子也可以被识别(你亲自用其他编程语言写出汉语句子的自动判断也挺麻烦的,汉语句子有多种多样的标点结束嘛)。 你在Word 2003的菜单上,点“工具”的“宏”的“Visual Basic 编辑器”,双击左侧的“Project”的子项目的“Microsoft Word对象”的“ThisDocument”,在右侧出现的空白区域,把下面的三行代码粘贴到空白区域,退出这个窗口之后,在当前的空白Word文件中粘贴或插入大量的文本内容,然后点菜单上的“工具”的“宏”的“宏”,就会弹出一个对话框,在这个对话框的下半部分有“宏的位置”这个下拉选项,你注意要选择为“所有的活动模板和文档”,就能看到“平均中文句长”这个宏(名),你选中它,点右侧的“运行”这个按钮,就会弹出一个消息框,这个消息框就是报告“平均中文句长”的。

Sub 平均中文句长()
MsgBox (ActiveDocument.Characters.Count - ActiveDocument.Paragraphs.Count) / ActiveDocument.Sentences.Count
End Sub



(上是VBA编辑器,下是“宏列表的对话框”)


以上的操作,其实就是点了若干下鼠标而已,没有编程。如果你觉得有点难以理解整个流程的话,可以观看我在优酷网的一个类似操作的视频教学“写一行代码,让Word计算指定区域的句子数量”(网址如下),持续23分钟而已,你就学会了如何把别人写好的VBA代码运行起来。
http://v.youku.com/v_playlist/f5427313o1p15.html

例如,我们有如下内容的一个Word文件打开了,运行了上面的宏代码:

你们爱语料。我爱吗?是的!

那么,弹出的消息框就会呈现出“4.33333”,这就是每个句子有4.33个字符(3.33个汉字+1个句末标点)的意思(上面是总共10个汉字+3个句末标点,分布于3个句子,还有最后的1个回车符也算1个字符哟)。


ActiveDocument.Characters.Count就是“当前文档的字符(汉字与标点)的总量”的意思;ActiveDocument.Paragraphs.Count就是“当前文档的段落总量”的意思;同理,ActiveDocument.Sentences.Count就是“当前文档的句子总量”的意思;但是,Word在计算每个句子的字符总量的时候也是把句末标点也计算为一个字符呢。所以,我推出的公式就是: (ActiveDocument.Characters.Count - ActiveDocument.Paragraphs.Count) / ActiveDocument.Sentences.Count,而不是”ActiveDocument.Characters.Count/ ActiveDocument.Sentences.Count

注意:本公式计算结果包含了句末的标点的,运行前提还包括你必须提前把整个文件中的空格都用“全部替换”的方式进行了全部删除。当然,你如果追求进一步的精确的话,也应该把句子中间可能出现的各种标点也全部替换而删除掉,例如:逗号,分号。

由此,我们可以看出,VBA编程语言具备Office的多个词库支持下的完整的字、词、句、段的完整的“对象模型”,寥寥一两句,足够其他的各种高级编程语言忙乎七八句以上了。如果对VBA很陌生或很有兴趣,可以看一眼,我在本站的另一个比较详细的帖子《学好VBA的门径与利弊》:
http://www.corpus4u.org/forum/showpo...6&postcount=12
 
顶部