معرفی پکیج WordsNinja برای Node.js

در حال توسعه سرویسی هستم که نیاز هست واژه‌های انگلیسی که بدون هیچ جداکننده‌ای در دیتاست قرار دارند رو به صورت واژه‌های تفکیک شده داشته باشم.

توسعه محصول برپایه Node.js هست و خب این مشکلی بود که لازم بود حل بشه، در جستجویی که داشتم به لینک زیر رسیدم:

https://stackoverflow.com/questions/8870261/how-to-split-text-without-spaces-into-list-of-words


نمونه کدهایی به زبان پایتون و جاوااسکریپت به همراه فایلی حاوی کلمات انگلیسی در این پست بود که به من برای حل مشکلم کمک کرد. (از خوبی‌های فعالیت در جامعه متن‌باز ?)

با استفاده از کد جاوااسکریپتی که در پست بود و بهینه‌سازی و توسعه اون پکیج npmی ایجاد کردم که برای پروژه‌های آینده کاربرد داشته باشه.

نام پکیج wordsninja هست که نحوه استفاده از اون رو توضیح میدم.

https://github.com/parsakafi/wordsninja


نصب پکیج

npm install wordsninja --save

فراخوانی پکیج و ایجاد object

const WordsNinjaPack = require('wordsninja'); 
const WordsNinja = new WordsNinjaPack();

برای استفاده نیاز هست ابتدا دیکشنری واژه‌های انگلیسی رو ایجاد کنید که با دستور زیر فرخوانی خواهد شد (خروجی این متد از نوع Promise هست که نیاز هست متد برنامه شما به شکل Async باشد)

await WordsNinja.loadDictionary();

تفکیک واژه‌ها به کمک متد splitSentence انجام میشه

let string = 'youneedtolearnfromyourmistakes'; 
let words = WordsNinja.splitSentence(string);
console.log(words);

که چنین خروجی رو نمایش میده:

[ 'you', 'need', 'to', 'learn', 'from', 'your', 'mistakes' ]

پارامترهای اختیاری متد splitSentence به شما برای ایجاد خروجی بهتر کمک میکند

پارامتر camelCaseSplitter: شروع تفکیک براساس Camel Case

پارامتر capitalizeFirstLetter: تغییر حروف ابتدای واژه‌ها به حروف بزرگ

پارامتر joinWords: برای ایجاد واژه‌ها به شکل پیوسته

نمونه کاملی از نحوه استفاده

(async () => {
 await WordsNinja.loadDictionary(); // First load dictionary
 let string = 'youneedtolearnfromyourmistakes';
 let words = WordsNinja.splitSentence(string,
        {
            camelCaseSplitter: true,  // Frist camel case spliting
            capitalizeFirstLetter: true,  // Capitalize first letter of result
            joinWords: true // Join words
        }
    );
 console.log(words);
})();

خروجی

You Need To Learn From Your Mistakes


افزودن واژه به دیکشنری در زمان اجرا

همچنین می‌توانید قبل از اجرای متد تفکیک واژه‌ها از متد addWords برای افزودن واژه(ها) به دیکشنری استفاده کنید، نمونه:

WordsNinja.addWords('Parsa');  // Add one word
WordsNinja.addWords(['Parsa', 'Kafi']); // Add one or more words


لینک پکیج در npm

https://www.npmjs.com/package/wordsninja


امیدوارم برای شما به هر شکل کاربردی باشه :)