인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

tokenize-tag-stem

tokenize-tag-stem

Use NLTK tokenization, detokenization, POS tagging, tagger training, stemming, lemmatization, and sentiment preprocessing APIs without reopening the source repo.

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: tokenize-tag-stem description: "Use NLTK tokenization, detokenization, POS tagging, tagger training, stemming, lemmatization, and sentiment preprocessing APIs without reopening the source repo." disable-model-invocation: true metadata: disco-role: operating license: Apache 2.0

Tokenize Tag Stem

Use this sub-skill when the task is about NLTK text preprocessing: tokenizing or detokenizing strings, running the nltk tokenize CLI, POS-tagging tokens, training simple taggers, stemming or lemmatizing words, or using VADER/basic sentiment preprocessing.

Route away from this sub-skill when the task is mainly about:

Fast Paths

  • For no-download word splitting, prefer WordPunctTokenizer, TreebankWordTokenizer, TweetTokenizer, or word_tokenize(text, preserve_line=True). sent_tokenize() and word_tokenize(..., preserve_line=False) need Punkt table data for the selected language.
  • For command-line tokenization, use nltk tokenize; it reads stdin and exposes --language, --preserve-line, --processes, --encoding, and --delimiter. The bundled CLI smoke checks the installed console script.
  • For tweets/social text, use TweetTokenizer(strip_handles=True, reduce_len=True, preserve_case=...); decide whether phone numbers should be matched with match_phone_numbers.
  • For POS tags, pass a list of tokens to pos_tag(tokens, tagset=None, lang="eng") or a list of token lists to pos_tag_sents. English uses averaged_perceptron_tagger_eng; Russian uses lang="rus" and averaged_perceptron_tagger_rus.
  • For a quick custom baseline tagger, combine RegexpTagger rules with UnigramTagger(train_sents, backoff=...); evaluate with accuracy, evaluate_per_tag, or a ConfusionMatrix when gold tagged sentences are available.
  • For stemming, use PorterStemmer(mode=...), SnowballStemmer(language, ignore_stopwords=False), LancasterStemmer, RegexpStemmer, or language-specific stemmers. Porter and most Snowball workflows do not need NLTK data.
  • For lemmatization, WordNetLemmatizer.lemmatize(word, pos="n") depends on WordNet for real morphology; download/check wordnet and omw-2.0 when multilingual or synonym-aware behavior is needed.
  • For sentiment, SentimentIntensityAnalyzer() requires vader_lexicon; route missing lexicon errors to the data/downloader sub-skill. SentimentAnalyzer can build features for a classifier workflow, which then routes to the ML sub-skill.

Reference Map

Minimum Validation Pattern

  1. Print nltk.__version__, the exact API or CLI route, and whether the workflow is allowed to download NLTK data.
  2. For tokenization, test one representative string and state whether sentence splitting is enabled (preserve_line=False) or skipped (preserve_line=True).
  3. For POS tagging, assert the input is list[str], not a raw string; for batches, assert list[list[str]].
  4. Before running data-backed APIs, probe exact resources such as tokenizers/punkt_tab/english/, taggers/averaged_perceptron_tagger_eng/, taggers/universal_tagset/, corpora/wordnet/, or sentiment/vader_lexicon.zip/vader_lexicon/vader_lexicon.txt.
  5. For custom taggers, keep training/testing data separated and report unknown-token behavior instead of hiding None tags.
  6. Run the bundled no-download smoke from any current working directory in an environment with NLTK installed:
python /path/to/skills/disco/nltk/sub-skills/tokenize-tag-stem/scripts/text_preprocess_smoke.py --json
python /path/to/skills/disco/nltk/sub-skills/tokenize-tag-stem/scripts/tokenize_cli_smoke.py --json
저장한 Skills