Страничка курса: https://maxcom.github.io/scala-course-2022/
"Домашнее" задание: развиваем классификатор
Игнорируем окончания у слов.
Используем готовую библиотеку - Apache Lucene
libraryDependencies +=
"org.apache.lucene" % "lucene-analyzers-common" % "8.11.1"
build.sbt
Создаем анализатор:
val analyzer = new RussianAnalyzer()
В комплекте - токенизатор и стеммер Портера
Нам нужно достать
case class Term(word: String, start: Int, end: Int)
смещения понадобятся для диагностики
val ts = analyzer.tokenStream("text", "тестовая строка")
ts.reset()
val out = new ArrayBuffer[Term]
while (ts.incrementToken()) {
val word =
ts.getAttribute(classOf[CharTermAttribute]).toString
val offsets = ts.getAttribute(classOf[OffsetAttribute])
out += Term(word, offsets.startOffset(), offsets.endOffset())
}
out // Term(тестов,0,8), Term(строк,9,15)
Используем при классификации и при обучении.
3 характерных слова для найденного класса.
Выделяем слова в тексте символами '*'
Пример:
вот вам английский язык! Выучить от сих до сих! Приеду — проверю!
Если *не* выучите — моргалы *выколю*, пасти *порву* и,
как их, эти… носы пооткушу. Ясно?!
выделяем слова целиком, с окончаниями
Срок сдачи - 20 апреля.
Делаем новый merge request
Если первый mr еще не принят - отдельная ветка под второй