فهرست مستندات پروژه
کنترل ورودی و متن ترکیبی
نامها و متن فنی را حفظ کنید و رفتار تشخیص و نشانهگذاری را تنظیم کنید.
دستنخورده نگهداشتن یک واژه
مثالهای این صفحه فایلهای اجرایی هستند که کنار بارگذار hybrid.mjs قرار میگیرند. آن بارگذار، مدل و جدول فراوانی و واکه مورد استفاده وبسایت را فراهم میکند.
import { engine } from "./hybrid.mjs";
console.log(engine.transliterate("tu google bezan").text);
console.log(engine.transliterate("tu google bezan", { protect: ["google"] }).text);
console.log(engine.transliterate("google", {
protect: ["google"], forceConvert: ["GOOGLE"],
}).text);
تو گوگل بزن
تو google بزن
گوگل
گزینههای protect و forceConvert کل توکن، یعنی بخش جداشده متن، را بدون حساسیت به بزرگی حروف مقایسه میکنند؛ نه زیررشته یا عبارت دلخواه را. برای واژههای معمول لاتین، forceConvert بر protect اولویت دارد. حفظ درخواستی با copyReason: "english" گزارش میشود و دلیل جداگانهای برای «حفظ به درخواست کاربر» وجود ندارد. اگر رابط شما این تفاوت را لازم دارد، اطلاعات آن را جدا نگه دارید.
تطبیق کامل در forceConvert میتواند حتی الگوی محافظت قطعی را کنار بزند و سپس جداسازی متن ادامه پیدا میکند. اجبار تبدیل یک نشانی یا شناسه، تبدیل معنادار کل ساختار را تضمین نمیکند و ممکن است حفظ آن را به هم بزند. بهتر است واژههای منفرد را اجبار کنید.
حفظ بخشهای فنی شناختهشده
import { engine } from "./hybrid.mjs";
console.log(engine.transliterate(
"salam, link https://example.ir/a?x=1 va `npm install`",
).text);
console.log(engine.transliterate(
"salam @navid [email protected] #tehran 12.5 سلام 😀 API_KEY",
).text);
سلام، لینک https://example.ir/a?x=1 و `npm install`
سلام @navid [email protected] #tehran 12.5 سلام 😀 API_KEY
آزمونها نشانی وب، ایمیل، منشن، هشتگ، عدد، کد داخل بکتیک، شناسه، ایموجی و متن غیرلاتین شناختهشده را پوشش میدهند. وقتی بخشی copy شناخته شود، خروجی آن با ورودی یکسان است. این ویژگی به معنی تشخیص همه شکلهای ممکن نشانی، حصار Markdown، شناسه، نام یا عبارت انگلیسی نیست.
این ابزار تجزیهگر Markdown نیست. نمونههای کد داخل بکتیک آزمایش شدهاند؛ از آنها پشتیبانی کامل از کد تودرتو یا حصارهای چندخطی را نتیجه نگیرید. تشخیص دامنه بدون پروتکل از فهرست محدودی از پسوندها استفاده میکند. نشانههای یونیکد ممکن است جدا از واژه فارسی پردازش شوند. هنگام پیوستن پسوندهای جدا، فاصله هم میتواند تغییر کند؛ بخشها و موقعیتها را ببینید.
واژههای انگلیسی و نامها به بازبینی نیاز دارند
تشخیص از فهرست کوچک انگلیسی، الگوهای نوشتاری، بزرگی حروف و واژههای همشکل فینگلیش استفاده میکند. man، to و in با وجود واژهبودن در انگلیسی، میتوانند فارسی باشند. وامواژههای شناختهشده ممکن است تبدیل شوند و واژه انگلیسی مجاور دوباره باعث حفظ آنها شود. حرف بزرگ در میانه جمله اغلب نام را حفظ میکند، اما در ابتدای جمله ممکن است تبدیل شود. متن تمامبزرگ هم ممکن است کد تلقی شود. اینها روشهای تقریبیاند، نه تشخیص کامل زبان یا نام. نام محصول را به protect اضافه کنید و ورودی اصلی را در دسترس نگه دارید.
نشانهگذاری روی توکنهای نشانه اعمال میشود
با اینکه برخی توضیحات قدیمی به محدودبودن این رفتار به متن فارسی اشاره میکنند، پیادهسازی فعلی حتی در جمله کاملا انگلیسی هم نشانههای مستقل را فارسی میکند:
import { engine } from "./hybrid.mjs";
console.log(engine.transliterate("hello, world?").text);
console.log(engine.transliterate("hello, world?", { persianPunctuation: false }).text);
hello، world؟
hello, world?
در حالت پیشفرض، ? ; , به ؟ ؛ ، تبدیل میشوند. محتوای نشانی یا کد محافظتشده از این مرحله عبور نمیکند. persianPunctuation: false خود توکنهای نشانهگذاری را حفظ میکند. تابع transliterate گزینهای برای تبدیل رقمها در هر فراخوانی ندارد؛ عددهای شناختهشده کپی میشوند. ابزار جداگانه normalize() گزینههای متفاوتی دارد و کل رشته دریافتی را تغییر میدهد؛ اجرای آن روی خروجی ترکیبی ممکن است حفظ متن را از بین ببرد.
دیگر گزینههای هر فراخوانی
| گزینه | پیشفرض | اثر عملی |
|---|---|---|
alternatives | 3 | سقف خروجیهای جایگزین کل متن؛ برای حذف آنها 0 بدهید |
candidatesPerSpan | 3 | سقف گزینههای قابل مشاهده هر بخش تبدیلشده؛ برای رابط بازبینی عدد صحیح مثبت بدهید |
beamWidth | 8 | پهنای جستوجوی فقط مدل؛ روش ترکیبی اکنون از مقدار داخلی ثابت ۸ استفاده میکند و مسیر قواعد این گزینه را نمیخواند |
backend | "auto" | هر دو مقدار "auto" و "cpu" اکنون از جاوااسکریپت روی پردازنده استفاده میکنند |
این گزینهها محدودیت طول ورودی یا زمانبندی اجرا نیستند. برنامه باید عددهای صحیح، محدود و مناسب را اعتبارسنجی کند. گزینه بیشتر ممکن است کار بیشتری لازم داشته باشد و وجود واژه مورد نظر را تضمین نمیکند. به دلیل کش واژه، تنظیمهای رمزگشایی را در نمونهای که دوباره استفاده میشود ثابت نگه دارید.