Мультиязыковая версия приговор N-грамм


Задание: преобразовать предложения N-грамм и удалить все знаки препинания

Тесты:

Вход: N-грамм('имя + другие ~ имя!', 1)

Результат: ['имя', 'другие', 'имя']

Вход: N-грамм('имя + другие ~ имя!', 2)

Результат: ['имя', 'другое имя']

Вход: N-грамм('имя + другие ~ имя!', 10)

Результат: ['имя, название']

Вход: N-грамм('Мене також.', 10)

Результат: ['Мене також']

Код:

function ngram(data, order) {
    const regex = /[^A-Za-zА-ЯЄІЇа-яєії0-9_']/g
    let ngramsArray = []

    data = data
      .replace(regex, ' ')
      .split(' ')
      .filter(element => element.length > 0)

    if (order > data.length) {
      order = data.length
    }

    for (let i = 0; i < data.length - (order - 1); i++) {
      let subNgramsArray = []

      for (let j = 0; j < order; j++) {
        subNgramsArray.push(data[i + j])
      }

      ngramsArray = [...ngramsArray, subNgramsArray.join(' ')]
    }

    return ngramsArray
  }


Комментарии