Мне дали слово без пробелов, моя цель состоит в том, чтобы сегментировать это слово, вставляя пробелы в нужное место.
Скажем, данное слово "ineedyou", тогда мой результат сегментации слова должен быть "Я нуждаюсь в тебе".
Для этой задачи мне дана функция беглости (скажем, f), которая берет слово и говорит, насколько часто это слово встречается в корпусе.
Значит, f ('i') + f ("нужно") + f ("ты")
Я использую Унифицированный поиск стоимости (UCS), чтобы решить эту проблему, но мне трудно установить свои состояния, действия и целевое состояние.
Я решил проблему, установив, что мои состояния - это набор, где запятая представляет пробел, так что мое начальное состояние (ineedyou), и если мое действие заключается в вставке пробела после буквы «i», тогда мое следующее состояние будет («я», «нуждаюсь»).
Я представлял действие вставки пробела в виде целого числа, это целое число - позиция, где я нарушу свое слово. Полный пример:
state_s0 = ('ineedyou')
action_a0 = 1
Теперь мое действие будет представлять собой пробел в последнем элементе кортежа.
state_s1 = ('i', 'needyou')
action_a1 = 2
state_s2 = ('i', 'ne', 'dyou')
В качестве цели для моего UCS я установил кортеж ('i', 'need', 'you'), и он работает совершенно нормально, однако, как мне решить эту проблему без необходимости устанавливать ('i', «нужно», «ты») как цель вручную?