界面已本地化;技能介绍与说明文档按所选语言由 AI 自动翻译,代码、命令、路径和专业术语保留原文,以原作者文档为准。
探索技能
效率与协作 · 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.

独立 GitHub 快照 · 自动分类 · 以原作者文档为准

技能说明

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
我的收藏