Глядя на исходный код для sent_tokenize()
, показано, что в этом методе в настоящее время используется предварительно обученный токенизатор punkt, поэтому он эквивалентен PunktSentenceTokenizer
. Независимо от того, нужно ли вам переучивать токенизатор, зависит от характера текста, с которым вы работаете. Если это не слишком экзотично, как газетные статьи, то вы, скорее всего, найдете достаточно подготовленный токенизатор. Токенизация сводится к задаче категоризации, и поэтому различные токенизаторы можно сравнить, используя типичные показатели, такие как точность, отзыв, f-оценка и т. Д. По помеченным данным.
Tokkenizer punkt основан на работе, опубликованной в следующем документе:
http://www.mitpressjournals.org/doi/abs/10.1162/coli.2006.32 .4.485 # .V2ouLXUrLeQ
Это основополагающий подход, основанный на эвристике, ориентированный на устранение неоднозначности границ предложений от аббревиатур - проклятие токенизации предложения. Вызов эвристического подхода не означает, что он пренебрежительный. Раньше я использовал встроенный токенизатор предложений, и он отлично работал для того, что я делал, конечно, моя задача не зависела от точного определения точного предложения. Вернее, я смог набросить на него достаточное количество данных, где это не имело никакого значения.
Вот пример вопроса о SO, где пользователь обнаружил недостаточно подготовленный токенизатор и ему нужно было тренировать новый:
Как настроить токенизатор предложения NLTK
Этот текст был Moby Dick, а структура нечетных предложений включала токенизатор , Некоторые примеры того, где вам может понадобиться подготовить свой собственный токенизатор, - это социальные сети (например, твиттер) или техническая литература с множеством странных аббревиатур, которые не встречаются заранее подготовленным токенизатором.
Извините за то, что вы сбиваете с толку свой комментарий. Предполагая, что у вас есть файл инвентаря
[ALL]
host1.com
host2.com
, ваш файл yaml должен выглядеть так (используя with_items)
- hosts: all
sudo: yes
tasks:
- name: install pacemaker
apt: name=pacemaker state=present
- name: install corosync
apt: name=corosync state=present
- name: install fence-agents
apt: name=fence-agents state=present
- copy: src=corosync_start dest=/etc/default/corosync
- lineinfile: dest=/etc/selinux/config line="my host {{ item }}"
with_items: groups['ALL']
Просто помните об этом создаст каждую строку для каждого хоста. Я думаю, что вы ищете, а не зацикливание, но получение текущего имени хоста (ansible_hostname):
- hosts: all
sudo: yes
gather_facts: yes
tasks:
- name: install pacemaker
apt: name=pacemaker state=present
- name: install corosync
apt: name=corosync state=present
- name: install fence-agents
apt: name=fence-agents state=present
- copy: src=corosync_start dest=/etc/default/corosync
- lineinfile: dest=/etc/selinux/config line="my host {{ ansible_hostname }}"
Что-то в этом направлении должно работать:
- debug: msg="host is {{ item }}"
with_items: groups['app_servers']
Это даст вам имя каждого хоста, как определено в вашем инвентаре. Если вы хотите получить полное доменное имя, предоставленное фактом Ansible (или любые другие факты для хоста), то вы хотите сделать что-то вроде этого:
- debug: msg="host is {{ hostvars[item]['inventory_hostname'] }}"
with_items: groups['app_servers']
вы можете использовать этот официальный модуль, созданный с помощью ansible. Подобно этому
- debug:
msg: "{{ item }}"
with_inventory_hostnames:
- all
Ссылка Ссылка http://docs.ansible.com/ansible/latest/playbooks_loops.html#looping -Более-заместитель инвентаризации