簡易な英語の分かち書き(形態素解析)


はじめに

簡易な英語の分かち書きです。

調べても巨大なライブラリしか見つからなかったため、作成しました。スペース区切りより頭がいいので、ライブラリ入れるのが嫌なとき用です。tiny_segmenter.jsの英語版みたいなものです。

仕様

  • 英単語を単語単位で分割します
  • 英語の区切り文字を出力に含めます
    • '"!?-:;,.
  • 全角文字もしくは想定外の記号は、区切りや英単語がない限り連続した文字として扱います

※全角の文章を分かち書きすることは、考慮されていません
 例外的に全角文字が許可されているだけです

ソースコード

engramify.js/*! engramify.js | MIT License | (c) 2020 toshi (https://github.com/k08045kk) | https://opensource.org/licenses/MIT */
// 簡易な英単の分かち書き
const engramify = function(text) {
  const array = [];
  const re = /[A-Z]+[a-z]*|[A-Z]*[a-z]+|'[A-Z]*[a-z]*|[0-9]+|"|!|\?|-|:|;|,|\.|[^A-Za-z0-9'"!\?\-:;,\.\s]+/g;
  let m;
  while ((m=re.exec(text)) !== null) {
    array.push(m[0]);
  }
  return array;
};

使用例

engramify("It's a gift for Mr. 太郎. 太郎さんへのgiftです。");
// [ "It", "'s", "a", "gift", "for", "Mr", ".", "太郎", ".", "太郎さんへの", "gift", "です。" ]

engramify("May I have extension 1111, please?");
// [ "May", "I", "have", "extension", "1111", ",", "please", "?" ]

engramify("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.");

関連