Project Icon

GermanWordEmbeddings

开源德语词向量训练与评估工具包

GermanWordEmbeddings是一个开源的德语词向量模型训练与评估工具包。该工具包基于gensim的word2vec实现,提供了从语料库获取、预处理到模型训练和评估的完整流程。工具包支持语法和语义特征评估,可用于德语自然语言处理研究。项目还提供了一个基于德语维基百科和新闻文章训练的预训练模型。

德语词嵌入

许可证 下载量

关于英语语料库词嵌入训练的研究已有很多。这个工具包通过gensim的word2vec对德语语料库应用深度学习,以训练和评估德语语言模型。项目概述、评估结果和下载链接可以在项目网站或直接在本仓库中找到。

本项目基于MIT许可证发布。

  1. 开始使用
  2. 获取语料库
  3. 预处理
  4. 训练模型
  5. 词汇表
  6. 评估
  7. 下载

开始使用

确保您已安装Python 3以及以下库:

pip install gensim nltk matplotlib numpy scipy scikit-learn

现在您可以下载word2vec_german.sh并在shell中执行,以自动下载此工具包和相应的语料库文件,并进行模型训练和评估。请注意,这可能需要大量时间

您也可以克隆此仓库并使用我已经训练好的模型来尝试评估和可视化。

如果您只想了解不同Python脚本的工作原理,请查看代码目录以查看Jupyter Notebook脚本输出示例。

获取语料库

有多种方法可以获取公开可用且免费使用的大型德语语料库:

德语维基百科

wget https://dumps.wikimedia.org/dewiki/latest/dewiki-latest-pages-articles.xml.bz2

统计机器翻译

2007年至2013年的随机德语新闻:

for i in 2007 2008 2009 2010 2011 2012 2013; do
  wget http://www.statmt.org/wmt14/training-monolingual-news-crawl/news.$i.de.shuffled.gz
done

使用此工具包训练的模型基于德语维基百科和2013年的德语新闻。

预处理

该工具使用WikipediaExtractor(Giuseppe Attardi的Python脚本,用于过滤Wikipedia XML转储,基于GPLv3许可)和一些shell指令来预处理原始的维基百科XML语料库,以过滤所有XML标签和引号:

wget http://medialab.di.unipi.it/Project/SemaWiki/Tools/WikiExtractor.py
python WikiExtractor.py -c -b 25M -o extracted dewiki-latest-pages-articles.xml.bz2
find extracted -name '*bz2' \! -exec bzip2 -k -c -d {} \; > dewiki.xml
sed -i 's/<[^>]*>//g' dewiki.xml
sed -i 's|["'\''„"‚']||g' dewiki.xml
rm -rf extracted

德语新闻已经包含每行一个句子,没有任何XML语法开销。只需要删除引号:

for i in 2007 2008 2009 2010 2011 2012 2013; do
  gzip -d news.$i.de.shuffled.gz
  sed -i 's|["'\''„"‚']||g' news.$i.de.shuffled
done

之后,可以使用以下选项在这些语料库文件上调用 preprocessing.py 脚本:

标志默认值描述
-h, --help-显示帮助信息并退出
-p, --punctuationFalse过滤标点符号标记
-s, --stopwordsFalse过滤停用词标记
-u, --umlautsFalse将德语变音替换为相应的二合字母
-b, --bigramFalse检测并处理常见的二元词组
-t [ ], --threads [ ]处理器数量工作线程数
--batch_size [ ]32句子处理的批处理大小

使用示例:

python preprocessing.py dewiki.xml corpus/dewiki.corpus -psub
for file in *.shuffled; do python preprocessing.py $file corpus/$file.corpus -psub; done

训练模型

使用 training.py 脚本训练模型,可选参数如下:

标志默认值描述
-h, --help-显示此帮助信息并退出
-s [ ], --size [ ]100词向量的维度
-w [ ], --window [ ]5滑动窗口的大小
-m [ ], --mincount [ ]5考虑一个词的最小出现次数
-t [ ], --threads [ ]处理器数量用于训练模型的工作线程数
-g [ ], --sg [ ]1训练算法:Skip-Gram (1),否则CBOW (0)
-i [ ], --hs [ ]1使用层次采样进行训练
-n [ ], --negative [ ]0使用负采样进行训练(通常在5-20之间)
-o [ ], --cbowmean [ ]0对于CBOW训练算法:使用和(0)或平均值(1)合并上下文向量

使用示例:

python training.py corpus/ my.model -s 200 -w 5

请注意,第一个参数是一个目录,其中包含的每个文件都将被视为训练的语料库文件。

如果需要测量并存储训练模型所需的时间,可以使用以下命令:

{ time python training.py corpus/ my.model -s 200 -w 5; } 2>> my.model.result

词汇表

要计算给定语料库的词汇表,可以使用 vocabulary.py 脚本:

python vocabulary.py my.model my.model.vocab

评估

要创建测试集并评估训练好的模型,可以使用 evaluation.py 脚本。可以评估训练模型的语法和语义特征。为了成功创建测试集,在启动脚本之前应该创建以下源文件(有关更多信息,请参见脚本中的配置部分)。

语法测试集

通过语法测试,可以评估单数、复数、第三人称、过去时、比较级或最高级等特征。因此有3个源文件:形容词、名词和动词。每个文件每行包含一个唯一的词及其变位形式,用破折号分隔。这些组合模式可以在脚本配置中的 PATTERN_SYN 常量中输入。脚本现在根据给定的模式将每个词与5个随机的其他词组合,以创建适当的类比问题。一旦创建了包含问题的数据文件,就可以进行评估。通常,评估可以通过 gensim 的 word2vec 准确度函数 完成,但为了获得更具体的评估结果(正确匹配、前 n 个匹配和覆盖率),本项目使用自己的准确度函数(test_mostsimilar_groups()test_mostsimilar(),在 evaluation.py 中)。

该项目提供的源文件包含100个唯一名词和2种模式,100个唯一形容词和6种模式,以及100个唯一动词和12种模式,共产生1万个类比问题。以下是可能的源文件示例:

adjectives.txt

可能的模式:基本形-比较级-最高级

示例内容:

好-更好-最好
大声-更大声-最大声

参见src/adjectives.txt

nouns.txt

可能的模式:单数-复数

示例内容:

图片-图片们
名字-名字们

参见src/nouns.txt

verbs.txt

可能的模式:基本形-第一人称单数现在时-第二人称复数现在时-第三人称单数过去时-第三人称复数过去时

示例内容:

找到-我找到-你们找到-他找到-他们找到
搜索-我搜索-你们搜索-他搜索-他们搜索

参见src/verbs.txt

语义测试集

通过语义测试,可以评估涉及词义的特征。因此有3个源文件:相反词、最佳匹配和不匹配。给定的源文件总共产生950个语义问题。

opposite.txt

此文件包含相反词,每行遵循一个词-相反词的模式,用于评估模型寻找相反词的能力。脚本将每对词与10个随机的其他对组合,以构建类比问题。本项目提供的相反词源文件包含30个唯一对,产生300个类比问题。

示例内容:

夏天-冬天
白天-黑夜

参见src/opposite.txt

bestmatch.txt

此文件包含内容相似的词对组,用于评估模型寻找主题相关类比的能力。脚本将每对词与同组的所有其他对组合,以构建类比问题。本项目提供的最佳匹配源文件包含7组,共77个唯一对,产生540个类比问题。

示例内容:

: 政治
伊丽莎白-女王
查尔斯-王子
: 科技
安卓-谷歌
iOS-苹果
Windows-微软

参见src/bestmatch.txt

doesntfit.txt

此文件每行包含3个内容相似的词(用空格分隔)和一组不匹配的词(用破折号分隔),格式如匹配词1 匹配词2 匹配词3 不匹配词1-不匹配词2-...-不匹配词n。这用于测试模型在4个词中找出最不匹配词的能力。脚本将每个匹配的三元组与破折号分隔的不匹配词列表中的每个词组合,以构建不匹配问题。本项目提供的不匹配源文件包含11个三元组,每个三元组有10个不匹配的词,产生110个问题。

示例内容:

兔子 狗 猫 树-主人-大象-食物-房子-人-动物-宠物店-草地-动物园
八月 四月 九月 年-月-日-小时-分钟-时间-日历-周-季度-时钟

参见src/doesntfit.txt

可以使用以下选项执行脚本:

标志描述
-h, --help显示帮助信息并退出
-c, --create如果设置,在评估前创建测试集
-u, --umlauts如果设置,创建带有转换元音的附加测试集和/或使用它们

使用示例:

python evaluation.py my.model -u

注意:只有文件类型为.bin.model或没有任何后缀的文件被视为二进制文件。

下载

使用此工具包基于德语维基百科(2015年5月15日)和2013年德语新闻文章(2015年5月15日)训练的优化德语语言模型可以在此下载:

german.model [704 MB]

如果您想将此项目用于自己的工作,可以使用以下BibTex条目进行引用:

@thesis{mueller2015,
  author = {{Müller}, Andreas},
  title  = "{Analyse von Wort-Vektoren deutscher Textkorpora}",
  school = {柏林工业大学},
  year   = 2015,
  month  = jun,
  type   = {学士论文},
  url    = {https://devmount.github.io/GermanWordEmbeddings}
}

GermanWordEmbeddings 工具和预训练语言模型完全免费使用。如果您觉得它有用,请考虑通过 Paypal 捐赠以支持进一步开发。💚

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号