معرفی LanguageTool ابزاری برای تصحیح گرامری بدون اتصال به اینترنتمیخواستم ویدیو به انگلیسی بگیرم اما دیدم که من اصلا هنوز به سبک درستی قواعد گرامری رو رعایت نمیکنم و اول باید نوشتار خودم رو درست کنم و این قاعدهها رو کمکم تو ناخودآگاه خودم جا بندازم و بعد از چند تمرین حرفزدن با رعایت این قواعد، به سمت ویدیو برم که کیفیت قابل قبولی داشته باشه. بنابراین نیاز به ابزاری داشتم که کار proofreading یا تصحیح املایی و گرامری رو برای من انجام بده.
مشکلی که مدلهای هوشمصنوعی داشتند این بود که:۱- دیگه لحن و قلم خودم رو نداشتم(یعنی فقدان Personal branding)
۲- وابستگی شدیدی ایجاد میکرد و مثل این بود که مدام از حلالمسائل برای حل سوالات استفاده کنی.(البته به مدل استفاده ما از هوشمصنوعی هم بستگی داره اما خوب اکثرا ذهن ما پیشفرض از این روش استفاده میکنه وقتی مرحله به مرحله پیش نریم)
این رویکرد که ابتدا متن رو بنویسم و صرفا جاهایی که حس میکنم نامفهوم هست رو با LLM ها بررسی کنم رویکرد بسیار بهتر از این بود که کلا هرچی ورودی دارم مستقیم به AI بدم تا برام تصحیح کنه. بخوام مثال بهتری بزنم این ابزار مثل یک IDE برای زبانهای برنامهنویسی باید برای من عمل میکرد که خطاهای منطقی و نوشتاری کدی که مینویسیم رو هایلایت میکنه به جای اینکه کلا کد رو تغییر بده. بیشتر به یک همراهی نیاز داشتم که مثل یک معلم اشتباهات گرامری و تایپی رو به من گوشزد کنه به جای اینکه کلا متن رو بکوبه و از نو بسازه.
وبسایتهای آنلاین متعددی مثل Grammarly, Quilbot و … هستند که میتونید از اونها استفاده کنید اما مشکلی که داشتند:
۱- باید حتما به اینترنت وصل باشیم
۲- نمیخواستم هرچه مینویسم رو آنلاین به اشتراک بزارم.
۳- رابط کاربری سنگینی اکثرا داشتند و کار با اونها روان نبود.
۴- به خوبی نمیتونستم اونها رو تو برنامههای دیگه ادغام کنم.
پس از جستجو برای یافتن یک ابزار محلی، به languagetool رسیدم.
البته این ابزار وبسایت آماده هم مثل موارد بالا که اشاره کردیم داره , برای امتحان کردن و آشنایی با قابلیتهای languagetool میتونید از وبسایت خودش هم استفاده کنید.
لینک گیتهاب -
لینک وبسایتاما برای نصب محلی:اگر یک نسخه مینیمال کارتون رو راه میندازه میتونید از Flathub برنامه Eloquent رو نصب کنید:
لینک فلتهابخودش به صورت built-in این ابزار رو اجرا میکنه اما با این روش انعطاف کمی دارید و صرفا به قابلیتهای همین برنامه متکی هستید و برای ادغام در لیبرهآفیس و افزونه فایرفاکس نصب languagetool server رو پیشنهاد میکنم که برای نصب و راهاندازی اون طبق این مراحل عمل میکنیم:
مرحله اول: نصب با داکربرای نصب الگوگیری من از این وبسایت بود اما با مشکل اجرا میشد و یکسری تغییرات ریزی رو اعمال کردم:
لینک
https://fariszr.com/host-language-tool-with-docker/۱- این پوشه رو ایجاد کنید و وارد بشید:
mkdir languagetool
cd languagetoolاین پوشه رو میتونید هرجا خواستید تشکیل بدید.
۲- با یک
دانلود منیجر این دو تا فایل رو دانلود کنید(اولی حجمش کمی بالاست):
فایل N-gram :
https://languagetool.org/download/ngram-data/ngrams-en-20150817.zipفایل Fasttext :
https://dl.fbaipublicfiles.com/fasttext/supervised-models/lid.176.bin۳- دو تا فایلی که از مرحله قبل دانلود کرده بودیم:
فایل N-gram: در همین پوشه unzip کنید
فایل Fasttext: مستقیم در همین پوشه قرار بدید و اسم فایل رو به fasttext-model.bin تغییر بدید
یعنی باید ساختار پوشه تا به اینجا چنین چیزی میشه:
❯ tree -L 2
.
├── fasttext-model.bin
└── ngrams
└── en۳- یک فایل Dockerfile به این صورت تشکیل بدید:
nano Dockerfileو سپس این محتویات رو جاگذاری و ذخیره کنید:
FROM erikvl87/languagetool:latest
USER root
RUN apk add fasttext
USER languagetool
۴- فایل docker compose رو به این صورت ایجاد میکنیم:
nano docker-compose.ymlو این محتویات رو قرار میدیم:
services:
languagetool:
build: .
container_name: languagetool
restart: always
tmpfs:
- /tmp:exec
cap_drop:
- ALL
cap_add:
- CAP_SETUID
- CAP_SETGID
- CAP_CHOWN
security_opt:
- no-new-privileges
ports:
- 8010:8010
environment:
- langtool_languageModel=/ngrams
- Java_Xms=512m
- Java_Xmx=3g
# Remove these lines:
# - langtool_fasttextBinary=/usr/bin/fasttext
# - langtool_fasttextModel=/fasttext-model.bin
volumes:
- ./ngrams:/ngrams
# You can also remove this if you're using the auto-downloaded model:
# - ./fasttext-model.bin:/fasttext-model.bin
۴- تا این مرحله باید به چنین ساختاری رسیده باشید:
❯ tree -L 2
.
├── docker-compose.yml
├── Dockerfile
├── fasttext-model.bin
└── ngrams
└── enاینجا دیگه تقریبا کار اصلی تمومه. این دستور رو اجرا کنید و پس از دانلودشدن موفقیت آمیز ایمیجهای اولیه، سرویس راهاندازی میشه.
docker compose up -d --build۵- میتونید با اجرای دستور زیر در ترمینال از درست کردن برنامه اطلاع پیدا کنید:
curl -s -d "language=en-US" -d "text=I will go to there house." http://localhost:8010/v2/check | jqبرای اینکه بتونیم به طور گرافیکی از قابلیتهای این ابزار استفاده کنیم باشیم سری مرحله بعد رو دنبال کنید.
مرحله دوم: دسترسی به API محلی از طریق افزونه۱- ابتدا افزونه مرورگر اون رو از این لینک نصب میکنیم:
لینک افزونه فایرفاکس۲- با راستکلیک کردن روی آیکون افزونه و انتخاب گزینه manage extension و سپس در صفحه جدید بازشده با کلیک روی سه نقطه و سپس گزینه preference وارد تنظیمات افزونه میشیم.

۳- به انتهای صفحه برید و قسمت Advanced settings رو به این صورت تنظیم و ذخیره کنید:

۴- حالا اگر تنظیمات پیشفرض افزونه رو تغییر نداده باشید الان هرجا اقدام به تایپ کردن کنید(حتی در آدرسهای local) این افزونه اشتباهات گرامری رو به شما به همراه جایگزین صحیح نشون میده و با یک کلیک اون اشتباه رو درست میکنه.

البته اگر از قابلیت فعال شدن سراسری خوشتون نمیاد میتونید غیرفعال کنید و صرفا طوری تنظیم کنید که وقتی منوی افزونه رو باز کردید از اونجا اشکالات متن رو تشخیص بده. همچنین پس از تصحیح اولیه با مدل لوکال و حفظ بیان خودتون، میتونید به خود وبسایت languagetool برید و اونجا به صورت پیشرفتهتر حتی لحن متن و سایر ویژگیها رو هم با LLM آماده اون تغییر بدید(البته این مورد نیاز به اشتراک داره اما خوب میتونید از مدلهای هوشمصنوعی دیگهای که دارید استفاده کنید).
البته اگر اون رو هم خواستید کنترل داشته باشید این پروژه جالبی هست:
https://github.com/pluja/llm-language-tool