昨天做了一个德文数据的词频统计,发来的数据是word文件,如下

für mich ging es bei einem foto mit präsident erdogan nicht um politik oder um wahlen, sondern darum, das höchste amt des landes meiner familie zu respektieren.“deutsche fußball-fans hatten özil und gündogan das erdogan-foto übel genommen

一开始我以为他发错的数据有问题,不然怎么会 乱码呢!后来才知道,数据文件没错,德文的有些字符长得比较奇特。让我对word的德文文档做词频统计,按照流程顺序

  1. 读取docx文件的文本数据

  2. 对德文进行词频统计

  3. 输出到csv或者xlsx

现在我们已经将任务分成了四个部分,每个部分如果有无法实现的地方,可以百度谷歌,最后将各部分拼接起来,这个任务就完成了。

下面我们开始做吧

读取docx文件 百度搜了一遍,发现有一个 docx 库可以实现读取,而且找到现成的代码可供使用。

docx库的安装方法


pip install python
-
docx

安装好docx库之后,我们定义了read_docx函数用来读取docx文件,返回文本内容

运行结果

'was auch immer das ergebnis der letzten wahl gewesen wäre, oder der wahl davor, ich hätte das bild '

对德文进行词频 我直接在github上搜索德文切词库找到 SoMaJo 库,安装方法

pip install 
SoMaJo

分词的代码也找到了,直接定义为 segment函数

我们试试segment函数是否能正常运行


wordfreq = segment(text)

wordfreq

运行结果 输出结果 将结果保存到xlsx文件中,第一列是词语,第二列是词频。往常我们都是保存到csv文件中,但是发现用excel打开csv时,德文真的乱码了。那些奇怪的字符被更奇怪的乱码替换了。我直接google搜

how toexportgermanintoexcelusingpython

得到下面的结果

搜索结果的第一个结果里找到我需要的代码。我这里定义为to_xlsx函数

在这里我们测试下 to_xlsx函数,看看能否输出xlsx。


to_xlsx
(
wordfreq
,
'output.xlsx'
)

我们打开 output.xlsx 文件,如下图

完美! 现在我们将上面的代码组装起来