fixy

fixy

创新的土耳其语智能写作纠错与分析工具

Fixy是一个开源的土耳其语写作辅助工具,采用深度学习技术。它能纠正常规拼写错误和语义相关的语法错误,如连词和后缀的使用。项目使用双向LSTM等模型,在大规模数据集上训练,纠错性能优异。此外,Fixy还具备情感分析和正式/非正式语言识别功能。该项目致力于推动土耳其语自然语言处理技术的进步。

FIXYTürkçe NLPyazım düzelticiderin öğrenmeanlamsal analizGithub开源项目

团队成员

FIXY

我们的目标是创建一个开源的写作辅助/检查工具,它能够同时解决土耳其语自然语言处理文献中的多个不同问题,提出独特的方法,并弥补文献中研究的不足。我们希望通过深度学习方法解决用户文本中的拼写错误,同时对文本进行语义分析,以识别和纠正在这一背景下出现的错误。

语义拼写纠正

尽管文献中有许多纠正拼写错误的库,但没有一个能够纠正语义上下文中出现的错误。这类错误中最重要的是连词和后缀的情况,如-da/-de、-ki和-mi,它们应该分开或连在一起写。我们的研究完全独特,表现远远优于文献中的所有其他示例。我们尝试了1DCNN、GRU和LSTM RNN等模型,最终选择了表现最佳的双向LSTM模型,并使用贝叶斯搜索优化技术将参数优化到最佳值。

为了使模型在正式和非正式语言中都能表现良好并具有泛化能力,我们合并了三个不同的数据集。这些数据集包括OPUS字幕数据集、TSCORPUS维基百科数据集和TSCORPUS报纸数据集。

在我们的研究中,处理了超过8500万行的数据。在预处理阶段,我们将连接的后缀与单词分开,并用"X"替换。分开的后缀也用"X"替换。这样做是为了使模型在同一句子中出现多个后缀的情况下也能给出更准确的结果。预处理后,包含分开后缀的句子标记为0,包含连接后缀的句子标记为1。然后,为了防止模型学习错误,我们通过随机欠采样减少了数量较多的0和1标签。最终,模型学会了如何正确书写后缀,而不是学习错误。创建的数据集中,20%用作测试数据,10%用作验证数据。您可以在data文件夹中或通过以下标题下的drive链接访问所有CSV格式的数据集。

您可以使用pre_trained_weights文件夹中的权重直接加载并测试模型。或者,您也可以使用我们共享的数据或您自己的数据,以及您创建的模型,通过train笔记本来训练您自己的纠正器。

您可以在以下标题下分别找到性能结果、比较、模型区分的句子示例以及数据集的drive链接。

要求

Python 3.6+

安装项目

git clone https://github.com/Fixy-TR/fixy.git

DEEPCHECKER库

https://pypi.org/project/DeepChecker/

https://github.com/Fixy-TR/DeepChecker

您可以直接通过pip安装我们发布的用于DE-DA、KI和MI纠正的DeepChecker库。

安装库:

pip install DeepChecker

可用的函数及其用法:

Correct函数返回句子的正确形式。 Check函数返回句子通过sigmoid函数得到的值。接近0表示应该分开写。

from DeepChecker import correct_de, correct_ki, correct_mi, check_de, check_ki, check_mi print(correct_de("bu yaz bizimkiler de tatile gelecek")) # 将输出正确形式 print(check_de("bu yaz bizimkiler de tatile gelecek") # 将输出sigmoid值

DE/-DA的文献比较

研究准确率
Fixy87%
博斯普鲁斯大学78%
Google Docs34%
Microsoft Office29%
ITU0%
Libra Office0%

使用博斯普鲁斯大学创建的100个难句进行测试。相关文章

所使用的方法完全原创,与文献中的其他研究采用了不同的方法。性能结果的差异证明了该方法的正确性。

DE-DA、KI和MI所需的库

from google.colab import drive import pandas as pd import keras import pickle from keras.preprocessing.text import Tokenizer from keras.preprocessing.sequence import pad_sequences from sklearn.model_selection import train_test_split import tensorflow as tf from keras.layers import Dense, LSTM, Flatten, Embedding, Dropout , Activation, GRU, Flatten, Input, Bidirectional, GlobalMaxPool1D, Convolution1D, TimeDistributed, Bidirectional from keras.layers.embeddings import Embedding from keras.models import Model, Sequential from keras import initializers, regularizers, constraints, optimizers, layers

DE-DA纠正器

安装库后,我们加载模型并进行测试。

model.load_weights("/content/Model_deda.h5")
pred = tokenizer.texts_to_sequences(["olsun demek x zor artık"]) maxlen = 7 padded_pred = pad_sequences(pred, maxlen=maxlen) model.predict(padded_pred)
# 接近0的结果表示应该分开写后缀。 array([[0.04085088]], dtype=float32)
  • 测试数据准确率: 92.13%
  • 测试数据ROC AUC: 0.921

混淆矩阵 [336706 20522] [ 36227 327591]

类别精确率召回率F1分数支持度
00.90490.93970.9219357228
10.93840.90300.9204363818

数据 创建的包含3605229行标记-ki数据集的链接: 数据

KI修正器

安装库后,我们加载模型并进行测试。

model.load_weights("/content/Model_ki.h5")
pred = tokenizer.texts_to_sequences(["desem x böyle böyle oldu"]) maxlen = 7 padded_pred = pad_sequences(pred, maxlen=maxlen) model.predict(padded_pred)
# 接近0的结果表示应该分开写后缀。 array([[0.00843348]], dtype=float32)
  • 测试数据准确率: 91.32%
  • 测试数据ROC AUC: 0.913

混淆矩阵 [27113 3311] [ 1968 28457]

类别精确率召回率F1分数支持度
00.93230.89120.911330424
10.89580.93530.915130425

创建的包含304244行标记-ki数据集的链接: 数据

MI-MI-MU-MÜ修正器

安装库后,我们加载模型并进行测试。

model.load_weights("/content/Model_mi.h5")
pred = tokenizer.texts_to_sequences(["olsun demek x zor artık"]) maxlen = 7 padded_pred = pad_sequences(pred, maxlen=maxlen) model.predict(padded_pred)
# 接近0的结果表示应该分开写后缀。 array([[0.04085088]], dtype=float32)

创建的包含9507636行标记-mi数据集的链接: 数据

  • 测试数据准确率: 95.41%
  • 测试数据ROC AUC: 0.954

混淆矩阵 [910361 40403] [ 46972 903792]

类别精确率召回率F1分数支持度
00.95090.95750.9542950764
10.95720.95060.9539950764

文献中未发现关于ki和mi后缀的研究,这增加了项目的原创性。

语义文本分析

土耳其语情感分析

我们使用三层LSTM神经网络构建模型,用约26万条标记为正面和负面的情感数据进行训练。我们将随机生成的词向量与嵌入层一起添加到神经网络中。经过10轮训练,我们的模型达到了94.57%的准确率。

必要的库

import numpy as np import pandas as pd from keras.preprocessing import sequence from keras.models import Sequential from keras.layers import Dense, Embedding, LSTM, Dropout from tensorflow.python.keras.preprocessing.text import Tokenizer from tensorflow.python.keras.preprocessing.sequence import pad_sequences

安装库后,我们使用keras加载模型。

from keras.models import load_model model = load_model('hack_model.h5') # 加载模型

创建测试输入。

#测试评论(输入) text1 = "böyle bir şeyi kabul edemem" text2 = "tasarımı güzel ancak ürün açılmış tavsiye etmem" text3 = "bu işten çok sıkıldım artık" text4 = "kötü yorumlar gözümü korkutmuştu ancak hiçbir sorun yaşamadım teşekkürler" text5 = "yaptığın işleri hiç beğenmiyorum" text6 = "tam bir fiyat performans ürünü beğendim" text7 = "Bu ürünü beğenmedim" texts = [text1, text2,text3,text4,text5,text6,text7]

对测试输入进行分词和填充

#分词 tokens = turkish_tokenizer.texts_to_sequences(texts) #填充 tokens_pad = pad_sequences(tokens, maxlen=max_tokens)

模型预测这些输入更接近哪种情感

for i in model.predict(tokens_pad): if i < 0.5: print("负面")#发表了负面评论 else print("正面")#发表了正面评论
负面 负面 负面 正面 负面 正面 正面

创建的包含26万行标记为正面-负面的数据集链接: 数据

土耳其语正式-非正式文本分析

我们使用三层LSTM神经网络创建了一个模型,对从Twitter、报纸和维基百科收集的约2,504,900条数据进行了正式(规范)和非正式(不规范)的标注,并用这些数据训练了我们的神经网络。我们将随机生成的词向量与嵌入层一起添加到神经网络中。经过10轮训练,我们的模型达到了95.37%的准确率。

所需库

import numpy as np import pandas as pd from keras.preprocessing import sequence from keras.models import Sequential from keras.layers import Dense, Embedding, LSTM, Dropout from tensorflow.python.keras.preprocessing.text import Tokenizer from tensorflow.python.keras.preprocessing.sequence import pad_sequences

加载库后,我们使用keras加载模型。

from keras.models import load_model model = load_model('MODEL_FORMAL.h5') # 加载模型

创建测试输入。

# 创建测试输入 text1 = "atatürk, bu görevi en uzun süre yürüten kişi olmuştur." text2="bdjfhdjfhdjkhj" text3 = "hiç resimde gösterildiği gibi değil..." text4 = "bir yirminci yüzyıl popüler kültür ikonu haline gelen ressam, resimlerinin yanı sıra inişli çıkışlı özel yaşamı ve politik görüşleri ile tanınır. " text5 = "fransız halkı önceki döneme göre büyük bir evrim geçirmektedir. halk bilinçlenmektedir ve sarayın, kralın, seçkinlerin denetiminden çıkmaya başlamıştır. şehirlerde yaşayan pek çok burjuva, büyük bir atılım içindedir. kitaplar yaygınlaşmakta, aileler çocuklarını üniversitelere göndererek sağlam bir gelecek kurma yolunu tutarak kültürel seviyeyi yükseltmektedir. bağımsız yayıncıların çıkardıkları gazete, bildiri ve broşürler, kitlesel bilinçlenmeye yol açmaktadır. bu koşullar da toplumsal değişim taleplerinin olgunlaşmasına yol açmıştır." text6 = "bunu çıkardım söylediklerinden" text7 = "Bu koşullar da toplumsal değişim taleplerinin olgunlaşmasına yol açmıştır." text8="bu çok saçma yaa" text9="bana böyle bir yetki verilmedi." text10="napıcaz bu işi böyle" text11="Öncelikle Mercedes-Benz'e olan ilgin için teşekkür ederiz." text12="Ekibimizle çalışma isteğin için teşekkür ediyor, sağlıklı günler ve kariyerinde başarılar diliyoruz. Farklı etkinlik ve programlarda tekrar bir araya gelmek dileğiyle." text13="Ben de öyle olduğunu düşünmüyordum ama gittik yine de jzns" texts = [text1, text2,text3,text4,text5,text6,text7,text8,text9,text10,text11,text12,text13]

对测试输入进行分词和填充

#分词 tokens = tokenizer.texts_to_sequences(texts) #填充 tokens_pad = pad_sequences(tokens, maxlen=max_tokens)

模型预测这些输入更接近哪种情感

#预测测试数据 for i in model.predict(tokens_pad): if i < 0.5: print("informal") else: print("formal")
formal informal informal formal formal informal formal informal informal informal formal informal informal

包含1,204,900行标记为正式的数据集链接: 数据 包含3,934,628行标记为非正式的数据集链接: 数据

土耳其语情感文本分析

我们使用一个包含27,350条数据的数据集,这些数据被标记为6种不同的情感(恐惧、快乐、悲伤、厌恶、愤怒、惊讶),训练了SVM linearSVC、MultinomialNB、LogisticRegression和RandomForestClassifier模型。在建模之前,我们使用tfidf向量化器和土耳其语停用词列表对数据中的词进行向量化。在这些模型中,LinearSVC模型获得了最高的准确率。

模型准确率比较

模型准确率
LinearSVC0.80
LogisticRegression0.79
MultinomialNB0.78
RandomForestClassifier0.60

所需库

from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.naive_bayes import MultinomialNB from sklearn.svm import LinearSVC from sklearn.model_selection import cross_val_score from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score

加载库后,我们使用load_model加载模型并进行测试。

# 加载模型并测试 tfidf = TfidfVectorizer(sublinear_tf=True, min_df=5, norm='l2', encoding='latin-1', ngram_range=(1, 2), stop_words=myList) loaded_model = pickle.load(open("emotion_model.pickle", 'rb')) corpus = [ "İşlerin ters gitmesinden endişe ediyorum", "çok mutluyum", "sana çok kızgınım", "beni şaşırttın", ] tfidf.fit_transform(df.Entry).toarray() features = tfidf.transform(corpus).toarray() result = loaded_model.predict(features) print(result)
['Fear' 'Happy' 'Anger' 'Suprise']

我们从TREMODATA获取了用于此模型的数据集。此数据集的drive链接:数据

fixy_app(Flask API)

您可以使用虚拟环境中创建的Flask API在界面上展示模型。所需的库有:

from flask_wtf import FlaskForm from flask import Flask, request, render_template,redirect import pickle import re from wtforms.validators import DataRequired import pandas as pd from os.path import join

运行app.py文件可以将模型连接到前端。

alt text

alt text

基于规则的纠错器和更正式的方法

在后端,我们使用了Zemberek的Normalization模块进行基于规则的纠错。此外,我们还使用了Zemberek的Informal Word Analysis模块来查看文本的更正式版本。

生成噪声数据

为了让基于深度学习的拼写检查模型学习拼写错误,我们需要生成正确句子-错误句子对的数据。我们确定了土耳其语中常见的拼写错误,并使用它们创建了损坏正确单词的噪声函数。这样我们就可以获得模型所需的噪声数据。您可以在Noice_Adder_Functions.ipynb文件中找到这些函数。

清理后的维基百科数据集

您可以在任何土耳其语NLP研究中使用这个包含2,364,897行的清理后的土耳其语维基百科数据集:) 维基百科数据集

参考文献

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

热门AI工具生产力协作转型TraeAI IDE
蛙蛙写作

蛙蛙写作

AI小说写作助手,一站式润色、改写、扩写

蛙蛙写作—国内先进的AI写作平台,涵盖小说、学术、社交媒体等多场景。提供续写、改写、润色等功能,助力创作者高效优化写作流程。界面简洁,功能全面,适合各类写作者提升内容品质和工作效率。

AI助手AI工具AI写作工具AI辅助写作蛙蛙写作学术助手办公助手营销助手
问小白

问小白

全能AI智能助手,随时解答生活与工作的多样问题

问小白,由元石科技研发的AI智能助手,快速准确地解答各种生活和工作问题,包括但不限于搜索、规划和社交互动,帮助用户在日常生活中提高效率,轻松管理个人事务。

聊天机器人AI助手热门AI工具AI对话
Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

热门AI工具AI办公办公工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

模型训练热门AI工具内容创作智能问答AI开发讯飞星火大模型多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

AI助手热门AI工具AI创作AI辅助写作讯飞绘文内容运营个性化文章多平台分发
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

下拉加载更多