Copy disabled (too large)
Download .txt
Showing preview only (20,354K chars total). Download the full file to get everything.
Repository: NaturalNode/natural
Branch: master
Commit: 69c59f919630
Files: 376
Total size: 19.3 MB
Directory structure:
gitextract_o86o2zrq/
├── .eslintrc.json
├── .gitconfig
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug_report.md
│ │ ├── feature_request.md
│ │ └── pull_request_template.md
│ └── workflows/
│ ├── codeql-analysis.yml
│ ├── linter.yml
│ ├── node.js.yml
│ └── npm-publish.yml
├── .gitignore
├── .npmignore
├── .nycrc
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE.txt
├── README.md
├── SECURITY.md
├── benchmarks/
│ ├── index.js
│ ├── metaphone.js
│ ├── sample-id.txt
│ ├── soundex.js
│ └── stemmer_id.js
├── examples/
│ ├── classification/
│ │ ├── MaxEntAppliedToPOSTagging_spec.js
│ │ ├── basic.js
│ │ ├── recall.js
│ │ ├── store.js
│ │ └── try_events.js
│ ├── inflection/
│ │ ├── count.js
│ │ └── noun.js
│ ├── phonetics/
│ │ ├── compare.js
│ │ └── tokenize_and_phoneticize.js
│ ├── stemming/
│ │ ├── stem_corpus.js
│ │ └── stem_word.js
│ ├── tfidf/
│ │ ├── array_example.js
│ │ ├── multiple_terms.js
│ │ └── tfidf_example.js
│ └── tokenizer/
│ └── testSentenceTokenizer.js
├── index.js
├── io_spec/
│ ├── MaxEntClassifier_spec.js
│ ├── Sample_spec.js
│ ├── StorageBackend_spec.js
│ ├── bayes_classifier_spec.js
│ ├── classifier_spec.js
│ ├── logistic_regression_classifier_spec.js
│ ├── test_data/
│ │ └── tfidf/
│ │ ├── one
│ │ ├── tfidf_document1.txt
│ │ ├── tfidf_document2.txt
│ │ ├── tfidf_document3.txt
│ │ ├── tfidf_document4.txt
│ │ └── two
│ ├── tfidf_spec.js
│ ├── tmp/
│ │ ├── .this_folder_exists.txt
│ │ ├── 055ff9e6-bf89-42d0-b44a-4dcc523bf6fc.json
│ │ ├── 7cfb947f-0115-4ef6-b21b-d9554d51caf2.json
│ │ ├── bf35794b-83e7-4628-8ec2-a0cf451a6fb2.json
│ │ └── c2ee3580-26b9-4972-b7f9-e59a933ed021.json
│ ├── wordnet_index_spec.js
│ ├── wordnet_spec.js
│ └── wordnet_test.ts
├── lib/
│ └── natural/
│ ├── analyzers/
│ │ ├── SenType.ts
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── sentence_analyzer.js
│ ├── brill_pos_tagger/
│ │ ├── data/
│ │ │ ├── Dutch/
│ │ │ │ ├── README.txt
│ │ │ │ ├── brill_CONTEXTRULES.jg
│ │ │ │ ├── brill_CONTEXTRULES.json
│ │ │ │ ├── brill_LEXICON.jg
│ │ │ │ └── brill_Lexicon.json
│ │ │ └── English/
│ │ │ ├── README.txt
│ │ │ ├── lexicon_from_posjs.json
│ │ │ ├── tr_from_brill_paper.json
│ │ │ ├── tr_from_brill_paper.txt
│ │ │ ├── tr_from_posjs.json
│ │ │ └── tr_from_posjs.txt
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── lib/
│ │ ├── Brill_POS_Tagger.js
│ │ ├── Brill_POS_Tester.js
│ │ ├── Brill_POS_Trainer.js
│ │ ├── Corpus.js
│ │ ├── Lexicon.js
│ │ ├── Predicate.js
│ │ ├── RuleSet.js
│ │ ├── RuleTemplate.js
│ │ ├── RuleTemplates.js
│ │ ├── Sentence.js
│ │ ├── TF_Parser.js
│ │ ├── TF_Parser.pegjs
│ │ └── TransformationRule.js
│ ├── classifiers/
│ │ ├── bayes_classifier.js
│ │ ├── classifier.js
│ │ ├── classifier_train_parallel.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── logistic_regression_classifier.js
│ │ └── maxent/
│ │ ├── Classifier.js
│ │ ├── Context.js
│ │ ├── Distribution.js
│ │ ├── Element.js
│ │ ├── Feature.js
│ │ ├── FeatureSet.js
│ │ ├── GISScaler.js
│ │ ├── POS/
│ │ │ ├── ME_Corpus.js
│ │ │ ├── ME_Sentence.js
│ │ │ └── POS_Element.js
│ │ ├── Sample.js
│ │ └── SimpleExample/
│ │ └── SE_Element.js
│ ├── distance/
│ │ ├── dice_coefficient.js
│ │ ├── hamming_distance.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── jaro-winkler_distance.js
│ │ └── levenshtein_distance.js
│ ├── index.d.ts
│ ├── index.js
│ ├── inflectors/
│ │ ├── count_inflector.js
│ │ ├── form_set.js
│ │ ├── fr/
│ │ │ ├── count_inflector.js
│ │ │ └── noun_inflector.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── ja/
│ │ │ └── noun_inflector.js
│ │ ├── noun_inflector.js
│ │ ├── present_verb_inflector.js
│ │ └── singular_plural_inflector.js
│ ├── ngrams/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── ngrams.js
│ │ └── ngrams_zh.js
│ ├── normalizers/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── normalizer.js
│ │ ├── normalizer_ja.js
│ │ ├── normalizer_no.js
│ │ ├── normalizer_sv.js
│ │ └── remove_diacritics.js
│ ├── phonetics/
│ │ ├── dm_soundex.js
│ │ ├── double_metaphone.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── metaphone.js
│ │ ├── phonetic.js
│ │ └── soundex.js
│ ├── sentiment/
│ │ ├── Basque/
│ │ │ └── senticon_eu.json
│ │ ├── Catalan/
│ │ │ └── senticon_ca.json
│ │ ├── Dutch/
│ │ │ ├── negations_du.json
│ │ │ └── pattern-sentiment-nl.json
│ │ ├── English/
│ │ │ ├── negations_en.json
│ │ │ ├── pattern-sentiment-en.json
│ │ │ └── senticon_en.json
│ │ ├── French/
│ │ │ └── pattern-sentiment-fr.json
│ │ ├── Galician/
│ │ │ └── senticon_gl.json
│ │ ├── German/
│ │ │ ├── negations_de.json
│ │ │ └── pattern-sentiment-de.json
│ │ ├── Italian/
│ │ │ └── pattern-sentiment-it.json
│ │ ├── Portuguese/
│ │ │ ├── afinnShortSortedPortuguese.json
│ │ │ └── negations_pt.json
│ │ ├── SentimentAnalyzer.js
│ │ ├── Spanish/
│ │ │ ├── afinnShortSortedSpanish.json
│ │ │ ├── negations_es.json
│ │ │ └── senticon_es.json
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── tools/
│ │ ├── README.md
│ │ ├── XmlParser4PatternData.js
│ │ └── sentimentXmlParser.js
│ ├── spellcheck/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── spellcheck.js
│ ├── stemmers/
│ │ ├── Carry/
│ │ │ ├── index.js
│ │ │ ├── stepConfs.js
│ │ │ └── utils.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── indonesian/
│ │ │ ├── base_stemmer_id.js
│ │ │ ├── data/
│ │ │ │ └── kata-dasar.json
│ │ │ ├── prefix_rules.js
│ │ │ ├── removal.js
│ │ │ ├── stemmer_id.js
│ │ │ └── suffix_rules.js
│ │ ├── lancaster_rules.js
│ │ ├── lancaster_stemmer.js
│ │ ├── porter_stemmer.js
│ │ ├── porter_stemmer_de.js
│ │ ├── porter_stemmer_es.js
│ │ ├── porter_stemmer_fa.js
│ │ ├── porter_stemmer_fr.js
│ │ ├── porter_stemmer_it.js
│ │ ├── porter_stemmer_nl.js
│ │ ├── porter_stemmer_no.js
│ │ ├── porter_stemmer_pt.js
│ │ ├── porter_stemmer_ru.js
│ │ ├── porter_stemmer_sv.js
│ │ ├── porter_stemmer_uk.js
│ │ ├── stemmer.js
│ │ ├── stemmer_de.js
│ │ ├── stemmer_es.js
│ │ ├── stemmer_fa.js
│ │ ├── stemmer_fr.js
│ │ ├── stemmer_it.js
│ │ ├── stemmer_ja.js
│ │ ├── stemmer_nl.js
│ │ ├── stemmer_no.js
│ │ ├── stemmer_pl.js
│ │ ├── stemmer_pt.js
│ │ ├── stemmer_ru.js
│ │ ├── stemmer_sv.js
│ │ ├── stemmer_uk.js
│ │ └── token.js
│ ├── tfidf/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── tfidf.js
│ ├── tokenizers/
│ │ ├── aggressive_tokenizer.js
│ │ ├── aggressive_tokenizer_de.js
│ │ ├── aggressive_tokenizer_es.js
│ │ ├── aggressive_tokenizer_fa.js
│ │ ├── aggressive_tokenizer_fr.js
│ │ ├── aggressive_tokenizer_hi.js
│ │ ├── aggressive_tokenizer_id.js
│ │ ├── aggressive_tokenizer_it.js
│ │ ├── aggressive_tokenizer_nl.js
│ │ ├── aggressive_tokenizer_no.js
│ │ ├── aggressive_tokenizer_pl.js
│ │ ├── aggressive_tokenizer_pt.js
│ │ ├── aggressive_tokenizer_ru.js
│ │ ├── aggressive_tokenizer_sv.js
│ │ ├── aggressive_tokenizer_uk.js
│ │ ├── aggressive_tokenizer_vi.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── orthography_matchers.js
│ │ ├── regexp_tokenizer.js
│ │ ├── sentence_tokenizer.js
│ │ ├── sentence_tokenizer_deprecated.js
│ │ ├── tokenizer.js
│ │ ├── tokenizer_case.js
│ │ ├── tokenizer_ja.js
│ │ └── treebank_word_tokenizer.js
│ ├── transliterators/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── ja/
│ │ └── index.js
│ ├── trie/
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ └── trie.js
│ ├── util/
│ │ ├── abbreviations_en.js
│ │ ├── abbreviations_es.js
│ │ ├── bag.js
│ │ ├── directed_edge.js
│ │ ├── edge_weighted_digraph.js
│ │ ├── index.d.ts
│ │ ├── index.js
│ │ ├── longest_path_tree.js
│ │ ├── shortest_path_tree.js
│ │ ├── stopwords.js
│ │ ├── stopwords_es.js
│ │ ├── stopwords_fa.js
│ │ ├── stopwords_fr.js
│ │ ├── stopwords_id.js
│ │ ├── stopwords_it.js
│ │ ├── stopwords_ja.js
│ │ ├── stopwords_nl.js
│ │ ├── stopwords_no.js
│ │ ├── stopwords_pl.js
│ │ ├── stopwords_pt.js
│ │ ├── stopwords_ru.js
│ │ ├── stopwords_sv.js
│ │ ├── stopwords_uk.js
│ │ ├── stopwords_zh.js
│ │ ├── storage/
│ │ │ ├── File.js
│ │ │ ├── Memcached.js
│ │ │ ├── MongoDB.js
│ │ │ ├── Postgres.js
│ │ │ ├── Redis.js
│ │ │ ├── StorageBackend.js
│ │ │ ├── docker-compose.yml
│ │ │ ├── index.d.ts
│ │ │ └── index.js
│ │ ├── topological.js
│ │ └── utils.js
│ └── wordnet/
│ ├── data_file.js
│ ├── index.d.ts
│ ├── index.js
│ ├── index_file.js
│ ├── wordnet.js
│ └── wordnet_file.js
├── package.json
├── rollup.config.mjs
├── spec/
│ ├── MaxEntClassifier_spec.ts
│ ├── SentimentAnalyzer_spec.ts
│ ├── WordPunctTokenizer_spec.ts
│ ├── aggressive_tokenizer_de_spec.ts
│ ├── aggressive_tokenizer_es_spec.ts
│ ├── aggressive_tokenizer_fr_spec.ts
│ ├── aggressive_tokenizer_hi_spec.ts
│ ├── aggressive_tokenizer_nl_spec.ts
│ ├── aggressive_tokenizer_pt_spec.ts
│ ├── aggressive_tokenizer_spec.ts
│ ├── aggressive_tokenizer_sv_spec.ts
│ ├── aggressive_tokenizer_vi_spec.ts
│ ├── bayes_classifier_spec.ts
│ ├── brill_pos_tagger_spec.ts
│ ├── brill_pos_trainer_spec.ts
│ ├── carry_stemmer_fr_spec.ts
│ ├── classifier_spec.ts
│ ├── count_inflector_fr_spec.ts
│ ├── count_inflector_spec.ts
│ ├── damerau_levenshtein_spec.ts
│ ├── dice_coefficient_spec.ts
│ ├── double_metaphone_spec.ts
│ ├── esm/
│ │ └── smoke.mjs
│ ├── hamming_distance_spec.ts
│ ├── jaro-winkler_spec.ts
│ ├── lancaster_stemmer_spec.ts
│ ├── levenshtein_spec.ts
│ ├── logistic_regression_classifier_spec.ts
│ ├── longest_path_tree_spec.ts
│ ├── metaphone_spec.ts
│ ├── ngram_spec.ts
│ ├── ngram_zh_spec.ts
│ ├── normalizer_ja_spec.ts
│ ├── normalizer_no_spec.ts
│ ├── normalizer_spec.ts
│ ├── noun_inflector_fr_spec.ts
│ ├── noun_inflector_ja_spec.ts
│ ├── noun_inflector_spec.ts
│ ├── orthography_tokenizer_spec.ts
│ ├── porter_stemmer_de_spec.ts
│ ├── porter_stemmer_es_spec.ts
│ ├── porter_stemmer_fr_spec.ts
│ ├── porter_stemmer_it_spec.ts
│ ├── porter_stemmer_nl_spec.ts
│ ├── porter_stemmer_no_spec.ts
│ ├── porter_stemmer_pt_spec.ts
│ ├── porter_stemmer_ru_spec.ts
│ ├── porter_stemmer_spec.ts
│ ├── porter_stemmer_sv_spec.ts
│ ├── present_verb_inflector_spec.ts
│ ├── remove_diacritics_spec.ts
│ ├── sentence_analyzer_spec.ts
│ ├── sentence_tokenizer_spec.ts
│ ├── shortest_path_tree_spec.ts
│ ├── soundex_spec.ts
│ ├── spellcheck_spec.ts
│ ├── stemmer_id_spec.ts
│ ├── stemmer_ja_spec.ts
│ ├── stemmer_token_spec.ts
│ ├── support/
│ │ ├── count_tests.js
│ │ └── jasmine.json
│ ├── test_data/
│ │ ├── ConvertSnowballDict.js
│ │ ├── NYT-20150205-picassos-granddaughter-plans-to-sell-art-worrying-the-market.json
│ │ ├── NYT-20150205-picassos-granddaughter-plans_expected_tag_results.json
│ │ ├── Volkskrant-20150205-Knot-geldpers-aanzetten-is-paardenmiddel-voor-half-procent-inflatie.json
│ │ ├── Wikipedia_EN_FrenchRevolution.json
│ │ ├── Wikipedia_EN_InfluenceOfTheFrenchRevolution.json
│ │ ├── browntag_nolines_excerpt.json
│ │ ├── browntag_nolines_excerpt_maxent.json
│ │ ├── dutchStemResults.json
│ │ ├── index.document1.txt
│ │ ├── snowball_de.json
│ │ ├── snowball_es.json
│ │ ├── snowball_fr.json
│ │ ├── snowball_it.json
│ │ ├── snowball_nl.json
│ │ ├── snowball_no.json
│ │ ├── snowball_pt.json
│ │ ├── sv_stemmer_sample.js
│ │ ├── tfdif_testcorpus.txt
│ │ ├── tfidf_teststopwords.txt
│ │ └── wordnet_mini.sql
│ ├── tfidf_spec.ts
│ ├── tokenizer_case_spec.ts
│ ├── tokenizer_ja_spec.ts
│ ├── transliterator_ja_spec.ts
│ ├── treebank_word_tokenizer_spec.ts
│ └── trie_spec.ts
└── tsconfig.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .eslintrc.json
================================================
{
"env": {
"browser": true,
"commonjs": true,
"es2021": true
},
"extends": "standard-with-typescript",
"parserOptions": {
"ecmaVersion": "latest"
},
"rules": {
}
}
================================================
FILE: .gitconfig
================================================
[user]
email = hwl.ter.doest@gmail.com
name = Hugo W.L. ter Doest
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: Bug
assignees: Hugo-ter-Doest
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior, or clear and concise code excerpts that trigger the unexpected behaviour.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here, especially if you are running natural in the browser as part a framework.
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: Feature Request
assignees: Hugo-ter-Doest
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
================================================
FILE: .github/ISSUE_TEMPLATE/pull_request_template.md
================================================
Fixes #
## Proposed Changes
-
-
-
## Checklist before merging
- [ ] Added Jasmine tests
- [ ] Updates TypeScipt `index.d.ts` files
================================================
FILE: .github/workflows/codeql-analysis.yml
================================================
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '38 9 * * 4'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
security-events: write
strategy:
fail-fast: false
matrix:
language: [ 'javascript' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
# Learn more about CodeQL language support at https://git.io/codeql-language-support
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# ℹ️ Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
================================================
FILE: .github/workflows/linter.yml
================================================
---
###########################
###########################
## Linter GitHub Actions ##
###########################
###########################
name: Lint Code Base
#
# Documentation:
# https://help.github.com/en/articles/workflow-syntax-for-github-actions
#
#############################
# Start the job on all push #
#############################
on:
push:
branches-ignore: [master]
# Remove the line above to run when pushing to master
pull_request:
branches: [master]
###############
# Set the Job #
###############
jobs:
build:
# Name the Job
name: Lint Code Base
# Set the agent to run on
runs-on: ubuntu-latest
##################
# Load all steps #
##################
steps:
##########################
# Checkout the code base #
##########################
- name: Checkout Code
uses: actions/checkout@v2
with:
# Full git history is needed to get a proper list of changed files within `super-linter`
fetch-depth: 0
################################
# Run Linter against code base #
################################
- name: Lint Code Base
uses: github/super-linter/slim@v4
env:
VALIDATE_ALL_CODEBASE: false
DEFAULT_BRANCH: master
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
LINTER_RULES_PATH: /
================================================
FILE: .github/workflows/node.js.yml
================================================
# This workflow will do a clean install of node dependencies,
# build the source code and run tests across different versions of node
# For more information see:
# https://help.github.com/actions/language-and-framework-guides/
# using-nodejs-with-github-actions
---
name: Node.js CI
on:
push:
branches: [master]
pull_request:
branches: [master]
jobs:
build:
runs-on: ubuntu-latest
services:
redis:
image: redis:latest
ports:
- 6379:6379
postgres:
image: postgres:latest
env:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: naturaldb
POSTGRES_HOST: localhost
POSTGRES_PORT: 5432
POSTGRES_TABLE: naturaltable
ports:
- 5432:5432
memcached:
image: memcached:latest
ports:
- 11211:11211
mongodb:
image: mongo:latest
ports:
- 27017:27017
strategy:
matrix:
node-version: [20.x, 22.x, 24.x]
# See supported Node.js release schedule at
#https://nodejs.org/en/about/releases/
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
- name: Clean install
run: npm ci
- name: Lint
run: npm run lint
- name: Build
run: npm run build
- name: ESM smoke test
run: npm run smoke:esm
- name: Run Istanbul coverage
run: npm run coverage
# Save coverage report in Coveralls
- name: Coveralls
uses: coverallsapp/github-action@master
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
================================================
FILE: .github/workflows/npm-publish.yml
================================================
# This workflow will run tests using node and then publish a package to NPMjs when a release is created
# For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
---
name: Node.js Package
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- name: Build
run: npm run build
- run: npm test
publish-npm:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org/
- run: npm ci
- run: git config user.name "$GITHUB_ACTOR"
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.NPM_SECRET}}
================================================
FILE: .gitignore
================================================
*~
\#*
*.kpf
*classifier.json
node_modules
io_spec/test_data/wordnet/download/*
io_spec/test_data/sample.json
*.noun
*.verb
*.adj
*.adv
.npm
npm-debug.log
.vscode
.nyc_output/*
dist
================================================
FILE: .npmignore
================================================
benchmarks
spec
examples
io_spec
docs
================================================
FILE: .nycrc
================================================
{
"include": [
"io_spec/**/*_spec.js",
"dist/**/*_spec.js",
"lib/natural/**/*.js",
"lib/natural/**/*.ts"
],
"reporter": "lcov"
}
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leader responsible for enforcement: at the moment of writing
Hugo ter Doest.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing
When contributing to this repository, please explain your changes or additions in an issue or in the pull request.
When developing, please:
* Comply with Standard JS. This is tested when you commit to natural.
* Prevent code duplication. Use jscpd to test this. This is tested when you commit to natural.
* Write unit tests for jasmine. Make sure your unit tests pass.
* For compatibility with browsers, do not use the file system fs. If you need to read files, use JSON and require.
* Write documentation and commit this to the gh-pages branch.
* The current configuration of the unit tests requires the following environment variable to be set:
```
export NODE_PATH=.
```
# CD/CD pipeline
The repository uses Github Actions for testing and publishing.
Currently, there three workflows:
* Node CI: tests natural on the four most recent releases of Nodejs. Code coverage is analysed with Istanbul. Results are forwarded to Coveralls. In the README a badge shows the coverage.
* Nodejs package: The natural package is automatically published to NPM when a release is created (tagged).
* Lint Code Base: the repository is linted using the Github super linter which includes jslint and jscpd.
* CodeQL for detecting security vulnerabilities.
Github workflows can be found in the folder ./.github/workflows.
# Versioning
We apply semantic versioning. Given natural’s version number MAJOR.MINOR.PATCH, increment the:
* MAJOR version when you make incompatible API changes,
* MINOR version when you add functionality in a backwards compatible manner, and
* PATCH version when you make backwards compatible bug fixes.
================================================
FILE: LICENSE.txt
================================================
The MIT License (MIT)
Copyright (c) 2011, 2012 Chris Umbel, Rob Ellis, Russell Mull
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
================================================
FILE: README.md
================================================
# natural
[](https://www.npmjs.com/package/natural)
[](https://github.com/marketplace/actions/setup-node-js-environment)
[](https://standardjs.com)
[](https://github.com/marketplace/actions/super-linter)
[](https://coveralls.io/github/NaturalNode/natural?branch=master)
[](https://bestpractices.coreinfrastructure.org/projects/4651)
[](https://www.typescriptlang.org/)
"Natural" is a general natural language facility for nodejs. It offers a broad range of functionalities for natural language processing. Documentation can be found [here on GitHub Pages](https://naturalnode.github.io/natural/).
## Open source licenses
### Natural: MIT License
Copyright (c) 2011, 2012 Chris Umbel, Rob Ellis, Russell Mull, Hugo W.L. ter Doest
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
### WordNet License
This license is available as the file LICENSE in any downloaded version of WordNet.
WordNet 3.0 license: (Download)
WordNet Release 3.0 This software and database is being provided to you, the
LICENSEE, by Princeton University under the following license. By obtaining,
using and/or copying this software and database, you agree that you have read,
understood, and will comply with these terms and conditions.: Permission to use,
copy, modify and distribute this software and database and its documentation for
any purpose and without fee or royalty is hereby granted, provided that you
agree to comply with the following copyright notice and statements, including
the disclaimer, and that the same appear on ALL copies of the software, database
and documentation, including modifications that you make for internal use or for
distribution. WordNet 3.0 Copyright 2006 by Princeton University. All rights
reserved. THIS SOFTWARE AND DATABASE IS PROVIDED "AS IS" AND PRINCETON
UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF
EXAMPLE, BUT NOT LIMITATION, PRINCETON UNIVERSITY MAKES NO REPRESENTATIONS OR
WARRANTIES OF MERCHANT- ABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
THE USE OF THE LICENSED SOFTWARE, DATABASE OR DOCUMENTATION WILL NOT INFRINGE
ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS. The name of
Princeton University or Princeton may not be used in advertising or publicity
pertaining to distribution of the software and/or database. Title to copyright
in this software, database and any associated documentation shall at all times
remain with Princeton University and LICENSEE agrees to preserve same.
### Porter stemmer German: BSD License
The Porter stemmer for German is licensed by a BSD license. It states Standard BSD License in the source code, interpreted as the original BSD license consisting of four clauses.
================================================
FILE: SECURITY.md
================================================
# Security Policy
##
We run dependabot and Github's CodeQL analysis to detect security problems.
## Supported Versions
Use this section to tell people about which versions of your project are
currently being supported with security updates.
| Version | Supported |
| ------- | ------------------ |
| 5.1.10 | :white_check_mark: |
| 5.0.x | :x: |
| 4.0.x | :x: |
| < 4.0 | :x: |
## Reporting a Vulnerability
If you find a vulnerability please report a security issue in the Issues section of the repository. If you know how to fix it, create a pull request.
We will analyse the issue, and repair it a.s.a.p (best effort).
================================================
FILE: benchmarks/index.js
================================================
/**
* Module dependencies.
*/
const uubench = require('uubench')
/* global suite:writable */
suite = new uubench.Suite({
start: function () {
console.log()
},
result: function (name, stats) {
const persec = 1000 / stats.elapsed
const ops = stats.iterations * persec
console.log('%s : %s ops/s', name, ops | 0)
},
done: function () {
console.log()
}
})
require('./metaphone')
require('./soundex')
require('./stemmer_id')
suite.run()
================================================
FILE: benchmarks/metaphone.js
================================================
const fs = require('fs')
const natural = require('../')
const metaphone = natural.Metaphone.process
/* global suite */
// single word
suite.bench('metaphone() word', function (next) {
metaphone('stephen')
next()
})
// small body of text
const words = fs.readFileSync('lib/natural/index.js', 'utf8').split(/\W+/)
suite.bench('metaphone() small', function (next) {
for (let i = 0, len = words.length; i < len; ++i) {
metaphone(words[i])
}
next()
})
// medium body of text
const words2 = fs.readFileSync('README.md', 'utf8').split(/\W+/)
suite.bench('metaphone() medium', function (next) {
for (let i = 0, len = words2.length; i < len; ++i) {
metaphone(words2[i])
}
next()
})
================================================
FILE: benchmarks/sample-id.txt
================================================
Hari ini hari Sabtu. Ani tidak perlu pergi kuliah. Dia ingin pergi ke supermarket untuk berbelanja. Ani tinggal di rumah kos di dekat kampus.
Pagi hari sebelum kuliah biasanya Ani makan roti dengan margarine dan selai. Dia suka selai nanas dan dia masih punya 1 botol selai di rumah. Roti sudah tidak ada, tapi besok pagi dia tidak mau makan roti.
Kadang-kadang Ani suka makan roti dengan telor goreng juga. Tapi ibunya bilang lebih baik makan telor rebus saja, tidak perlu menggorengnya. Kalau sering menggoreng dapur menjadi kotor.
Ani juga senang masak nasi goreng dengan saus tomat. Dia perlu minyak goreng karena minyak gorengnya sudah habis. Oh ya, hari Selasa teman-teman dia mau datang ke rumahnya untuk belajar. Jadi dia mau membuat pisang goreng untuk teman-temannya. Dia mau membeli pisang di pasar besok. Dia juga perlu peralatan makan seperti piring dan gelas plastik. Peralatan makan lebih murah beli di pasar. Jadi Ani bisa membeli minyak goreng dan saus tomat juga besok.
Ani juga suka makan mie untuk makan pagi. Sudah tidak ada mie instan di rumahnya. Besok pagi dia ingin makan mie. Ani suka makan makanan yang pedas. Dia mau mencari sambal juga di supermarket. Katanya makan mie dengan sambal enak sekali.
Ani suka minum Coca Cola tapi biasanya kalau pagi dan malam hari dia minum Milo panas. Wah dia juga perlu membelinya karena sekarang di rumahnya hanya ada 1 sendok Milo, hanya cukup untuk minum malam ini. Besok pagi dia mau minum Milo juga.
Kalau pergi kuliah Ani membawa air untuk minum. Di kantin kampus ada orang menjual air mineral tapi harganya lebih mahal daripada di supermarket. Meskipun besok Ani tidak kuliah tapi lebih baik membelinya hari ini di supermarket.
================================================
FILE: benchmarks/soundex.js
================================================
const fs = require('fs')
const natural = require('../')
const soundex = natural.SoundEx.process
/* global suite */
// single word
suite.bench('soundex() word', function (next) {
soundex('stephen')
next()
})
// small body of text
const words = fs.readFileSync('lib/natural/index.js', 'utf8').split(/\W+/)
suite.bench('soundex() small', function (next) {
for (let i = 0, len = words.length; i < len; ++i) {
soundex(words[i])
}
next()
})
// medium body of text
const words2 = fs.readFileSync('README.md', 'utf8').split(/\W+/)
suite.bench('soundex() medium', function (next) {
for (let i = 0, len = words2.length; i < len; ++i) {
soundex(words2[i])
}
next()
})
================================================
FILE: benchmarks/stemmer_id.js
================================================
const fs = require('fs')
const natural = require('../')
const stemmerId = natural.StemmerId
/* global suite */
const words = fs.readFileSync('benchmarks/sample-id.txt', 'utf8').split(/\W+/)
suite.bench('stemmerId() sample text', function (next) {
for (let i = 0, len = words.length; i < len; ++i) {
stemmerId.stem(words[i])
}
next()
})
================================================
FILE: examples/classification/MaxEntAppliedToPOSTagging_spec.js
================================================
/*
Test of Classifier based on POS tagging
Copyright (C) 2018 Hugo W.L. ter Doest
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
// const fs = require('fs')
// const base_folder_test_data = 'spec/test_data/'
const brownCorpus = require('./test_data/browntag_nolines_excerpt_maxent.json')
// const classifierFile = base_folder_test_data + 'classifier.json'
const natural = require('../lib/natural')
const Classifier = natural.MaxEntClassifier
const FeatureSet = natural.FeatureSet
const Context = natural.Context
// Load some classes specific to part of speech tagging
const Corpus = natural.MECorpus
// const POS_Element = natural.POSElement
const Sentence = natural.MESentence
// Lexicon-based tagger is used for comparison
const Tagger = natural.BrillPOSTagger
const JSON_FLAG = 2
const nrIterations = 2
const minImprovement = 0.01
const trainCorpusSize = 50 // percentage
const DEBUG = false
// Structure of the event space
// - Classes are possible tags
// - A context consists of a window of words and a window of tags
function applyClassifierToTestCorpus (testCorpus, tagger, classifier) {
let totalWords = 0
let correctyTaggedLexicon = 0
let correctlyTaggedMaxEnt = 0
testCorpus.sentences.forEach(function (sentence) {
// Put the words of the sentence in an array
const s = sentence.taggedWords.map(function (token) {
return token.token
})
// Use the lexicon to tag the sentence
const taggedSentence = tagger.tagWithLexicon(s)
// Count the right tags
sentence.taggedWords.forEach(function (token, i) {
totalWords++
if (token.tag === taggedSentence.taggedWords[i].tag) {
correctyTaggedLexicon++
}
})
const sentenceLength = sentence.length
// Classify tags using maxent
taggedSentence.taggedWords.forEach(function (taggedWord, index) {
// Create context for classication
const context = new Context({
wordWindow: {},
tagWindow: {}
})
// And fill it:
// Current wordWindow
context.data.wordWindow['0'] = taggedWord.token
// Previous bigram
if (index > 1) {
context.data.tagWindow['-2'] = taggedSentence.taggedWords[index - 2].tag
}
// Left bigram
if (index > 0) {
context.data.tagWindow['-1'] = taggedSentence.taggedWords[index - 1].tag
}
// Right bigram
if (index < sentenceLength - 1) {
context.data.tagWindow['1'] = taggedSentence.taggedWords[index + 1].tag
}
// Next bigram
if (index < sentenceLength - 2) {
context.data.tagWindow['2'] = taggedSentence.taggedWords[index + 2].tag
}
// Left bigram words
if (index > 0) {
context.data.wordWindow['-1'] = taggedSentence.taggedWords[index - 1].token
}
// Right bigram words
if (index < sentenceLength - 1) {
context.data.wordWindow['1'] = taggedSentence.taggedWords[index + 1].token
}
// Classify using maximum entropy model
let tag = classifier.classify(context)
if (tag === '') {
tag = tagger.lexicon.tagWordWithDefaults(context.data.wordWindow['0'])
}
// Collect stats
if (tag === sentence.taggedWords[index].tag) {
// Correctly tagged
correctlyTaggedMaxEnt++
}
DEBUG && console.log('(word, classification, right tag): ' + '(' + taggedWord.token +
', ' + tag + ', ' + sentence.taggedWords[index].tag + ')')
})
})
DEBUG && console.log('Number of words tagged: ' + totalWords)
DEBUG && console.log('Percentage correctly tagged lexicon: ' + correctyTaggedLexicon / totalWords * 100 + '%')
DEBUG && console.log('Percentage correctly tagged maxent: ' + correctlyTaggedMaxEnt / totalWords * 100 + '%')
}
describe('Maximum Entropy Classifier applied to POS tagging', function () {
// Prepare the train and test corpus
DEBUG && console.log('Corpus after require: ' + JSON.stringify(brownCorpus, null, 2))
const corpus = new Corpus(brownCorpus, JSON_FLAG, Sentence)
DEBUG && console.log('Size of corpus: ' + corpus.sentences.length)
DEBUG && console.log('Corpus: ' + JSON.stringify(corpus, null, 2))
const trainAndTestCorpus = corpus.splitInTrainAndTest(trainCorpusSize)
const trainCorpus = trainAndTestCorpus[0]
DEBUG && console.log('Size of training corpus: ' + trainCorpus.sentences.length)
DEBUG && console.log('Training corpus: ' + JSON.stringify(trainCorpus, null, 2))
const testCorpus = trainAndTestCorpus[1]
DEBUG && console.log('Size of testing corpus: ' + testCorpus.sentences.length)
let sample = null
let classifier = null
let featureSet = null
let lexicon = null
let tagger = null
// Generate sample from trainCorpus
it('generates a sample from a corpus', function () {
sample = trainCorpus.generateSample()
expect(sample.size()).toBeGreaterThan(0)
DEBUG && console.log('Size of the sample: ' + sample.size())
})
it('generates a set of features from the sample', function () {
featureSet = new FeatureSet()
DEBUG && console.log(sample)
sample.generateFeatures(featureSet)
expect(featureSet.size()).toBeGreaterThan(0)
DEBUG && console.log('Number of features: ' + featureSet.size())
DEBUG && console.log(featureSet.prettyPrint())
})
it('analyses the sample', function () {
trainCorpus.analyse()
lexicon = trainCorpus.buildLexicon()
expect(lexicon.size()).toBeGreaterThan(0)
})
it('trains the maximum entropy classifier', function () {
classifier = new Classifier(featureSet, sample)
DEBUG && console.log('Classifier created')
classifier.train(nrIterations, minImprovement)
DEBUG && console.log('Checksum: ' + classifier.p.checkSum())
})
it('compares maximum entropy based POS tagger to lexicon-based tagger', function () {
// Test the classifier against the test corpus
// lexicon.setDefaultCategories('NN', 'NP');
tagger = new Tagger(lexicon)
applyClassifierToTestCorpus(testCorpus, tagger, classifier)
})
})
================================================
FILE: examples/classification/basic.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const classifier = new natural.BayesClassifier()
classifier.addDocument('my unit-tests failed.', 'software')
classifier.addDocument('tried the program, but it was buggy.', 'software')
classifier.addDocument('the drive has a 2TB capacity.', 'hardware')
classifier.addDocument('i need a new power supply.', 'hardware')
classifier.train()
console.log(classifier.classify('did the tests pass?'))
console.log(classifier.classify('did you buy a new drive?'))
================================================
FILE: examples/classification/recall.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
natural.BayesClassifier.load('classifier.json', null, function (err, classifier) {
if (err) {
console.log(err)
return
}
console.log(classifier.classify('did the tests pass?'))
})
================================================
FILE: examples/classification/store.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const classifier = new natural.BayesClassifier()
classifier.addDocument('my unit-tests failed.', 'software')
classifier.addDocument('tried the program, but it was buggy.', 'software')
classifier.addDocument('the drive has a 2TB capacity.', 'hardware')
classifier.addDocument('i need a new power supply.', 'hardware')
classifier.train()
classifier.save('classifier.json', function (err, classifier) {
if (err) {
console.log(err)
}
// the classifier is saved to the classifier.json file!
})
================================================
FILE: examples/classification/try_events.js
================================================
const natural = require('../../lib/natural')
const PorterStemmerEs = require('../../lib/natural/stemmers/porter_stemmer_es')
const classifier = new natural.LogisticRegressionClassifier(PorterStemmerEs)
classifier.addDocument('ranchero golpe', 'Huevos')
classifier.addDocument('bbq', 'Huevos')
classifier.addDocument('salchichas ranchero', 'Tortas')
classifier.on('trainedWithDocument', (v) => console.log(v))
classifier.on('doneTraining', (v) => console.log(v))
classifier.train()
classifier.save('classifier.json', (err) => console.log(err))
================================================
FILE: examples/inflection/count.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const inflector = natural.CountInflector
console.log(inflector.nth(1))
console.log(inflector.nth(2))
console.log(inflector.nth(3))
console.log(inflector.nth(4))
console.log(inflector.nth(10))
console.log(inflector.nth(11))
console.log(inflector.nth(101))
console.log(inflector.nth(102))
console.log(inflector.nth(103))
console.log(inflector.nth(104))
================================================
FILE: examples/inflection/noun.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const nounInflector = new natural.NounInflector()
let plural = nounInflector.pluralize('radius')
console.log(plural)
plural = nounInflector.pluralize('beer')
console.log(plural)
let singular = nounInflector.singularize('radii')
console.log(singular)
singular = nounInflector.singularize('beers')
console.log(singular)
================================================
FILE: examples/phonetics/compare.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const phonetic = natural.Metaphone
const wordA = 'phonetics'
const stdin = process.openStdin()
stdin.setEncoding('ascii')
process.stdout.write('try to enter a word that sounds like "' + wordA + '": ')
stdin.on('data', function (wordB) {
if (phonetic.compare(wordA, wordB)) { process.stdout.write('they sound alike!\n') } else { process.stdout.write('sorry, they don\'t sound alike.\n') }
process.exit()
})
================================================
FILE: examples/phonetics/tokenize_and_phoneticize.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const phonetic = natural.DoubleMetaphone
const sentence = 'phonetic modules contain algorithms'
const stdin = process.openStdin()
stdin.setEncoding('ascii')
// phonetic.attach()
process.stdout.write('enter a word that sounds like one of these, "' + sentence + '": ')
const words = phonetic.tokenizeAndPhoneticize(sentence, phonetic)
console.log(words)
function findMatch (input) {
const inputSounds = phonetic.process(input)
console.log(inputSounds)
for (let i = 0; i < words.length; i++) {
const wordSounds = words[i]
if (wordSounds[0] === inputSounds[0] &&
wordSounds[1] === inputSounds[1]) {
process.stdout.write('match found!\n')
return
}
}
process.stdout.write('no match found.\n')
}
stdin.on('data', function (input) {
findMatch(input)
process.exit()
})
================================================
FILE: examples/stemming/stem_corpus.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const stemmer = natural.PorterStemmer
console.log(stemmer.tokenizeAndStem('i stemmed words.'))
console.log(stemmer.tokenizeAndStem('i stemmed words.', true))
================================================
FILE: examples/stemming/stem_word.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const stemmer = natural.LancasterStemmer
console.log(stemmer.stem('stemming'))
================================================
FILE: examples/tfidf/array_example.js
================================================
/*
Copyright (c) 2011, Rob Ellis, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const TfIdf = natural.TfIdf
const tfidf = new TfIdf()
tfidf.addDocument(['document', 'about', 'node'])
tfidf.addDocument(['document', 'about', 'ruby'])
tfidf.addDocument(['document', 'about', 'ruby', 'node'])
tfidf.addDocument(['document', 'about', 'node', 'node'])
tfidf.tfidfs(['node', 'ruby'], function (i, measure) {
console.log('document #' + i + ' is ' + measure)
})
================================================
FILE: examples/tfidf/multiple_terms.js
================================================
/*
Copyright (c) 2011, Rob Ellis, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const TfIdf = natural.TfIdf
const tfidf = new TfIdf()
tfidf.addDocument('this document is about node.')
tfidf.addDocument('this document is about ruby.')
tfidf.addDocument('this document is about ruby and node.')
tfidf.tfidfs('node ruby', function (i, measure) {
console.log('document #' + i + ' is ' + measure)
})
================================================
FILE: examples/tfidf/tfidf_example.js
================================================
/*
Copyright (c) 2011, Rob Ellis, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('natural')
const TfIdf = natural.TfIdf
const tfidf = new TfIdf()
tfidf.addDocument('this document is about node.')
tfidf.addDocument('this document is about ruby.')
tfidf.addDocument('this document is about ruby and node.')
tfidf.addDocument('this document is about node. it has node examples')
console.log('node --------------------------------')
tfidf.tfidfs('node', function (i, measure) {
console.log('document #' + i + ' is ' + measure)
})
console.log('ruby --------------------------------')
tfidf.tfidfs('ruby', function (i, measure) {
console.log('document #' + i + ' is ' + measure)
})
console.log('-------------------------------------')
console.log(tfidf.tfidf('ruby', 0))
console.log(tfidf.tfidf('ruby', 1))
================================================
FILE: examples/tokenizer/testSentenceTokenizer.js
================================================
const Tokenizer = require('../../lib/natural').SentenceTokenizer
const abbreviations = require('../../lib/natural').abbreviations
const sentenceDemarkers = ['.', '!', '?']
const tokenizer = new Tokenizer(abbreviations, sentenceDemarkers)
const testData = `Breaking News: Renewable Energy on the Rise
In recent years, the adoption of renewable energy sources has been on a significant rise. Governments around the world are investing heavily in solar, wind, and hydroelectric power to reduce their carbon footprints and combat climate change.
In the United States, the Biden administration has set ambitious goals to achieve net-zero emissions by 2050. This involves a massive shift from fossil fuels to cleaner energy sources. "We are at a pivotal moment in history," said President Biden. "Our actions today will determine the health of our planet for future generations."
Meanwhile, in Europe, the European Union has been at the forefront of renewable energy adoption. Countries like Germany and Denmark are leading the charge with substantial investments in wind farms and solar panels. The EU's Green Deal aims to make Europe the first climate-neutral continent by 2050.
China, the world's largest emitter of greenhouse gases, is also making strides in renewable energy. The country has become the largest producer of solar panels and has invested heavily in wind energy. "China is committed to a green future," said President Xi Jinping during a recent summit.
Despite these advancements, challenges remain. The transition to renewable energy requires enormous financial investments, technological innovations, and policy changes. Additionally, the intermittency of renewable sources like solar and wind poses a challenge for grid stability.
Experts believe that with continued global cooperation and investment, renewable energy can become the dominant source of power in the coming decades. "The future is bright for renewable energy," said Dr. Jane Goodall, a renowned environmentalist. "We have the technology, the resources, and the will to make this change. Now, we must act."
Stay tuned for more updates on this developing story.`
const result = tokenizer.tokenize(testData)
console.log(result)
================================================
FILE: index.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
module.exports = require('./lib/natural/')
================================================
FILE: io_spec/MaxEntClassifier_spec.js
================================================
/*
Copyright (c) 2019, Hugo W.L. ter Doest
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
/* eslint-disable no-unused-expressions */
const fs = require('fs')
const _ = require('underscore')
const Sample = require('../lib/natural/classifiers/maxent/Sample')
const Element = require('../lib/natural/classifiers/maxent/SimpleExample/SE_Element')
const Context = require('../lib/natural/classifiers/maxent/Context')
const FeatureSet = require('../lib/natural/classifiers/maxent/FeatureSet')
const Classifier = require('../lib/natural/classifiers/maxent/Classifier')
const classifierFile = 'io_spec/test_data/classifier.json'
const nrIterations = 50
const minImprovement = 0.01
const DEBUG = false
describe('Maximum entropy classifier file IO', function () {
// Prepare sample
const sample = new Sample()
sample.addElement(new Element('x', new Context('0')))
sample.addElement(new Element('y', new Context('0')))
sample.addElement(new Element('x', new Context('1')))
sample.addElement(new Element('y', new Context('1')))
// Prepare feature set
const featureSet = new FeatureSet()
sample.generateFeatures(featureSet)
// Prepare classifier
const classifier = new Classifier(featureSet, sample)
DEBUG && console.log('Classifier created')
classifier.train(nrIterations, minImprovement)
DEBUG && console.log('Checksum: ' + classifier.p.checkSum())
it('saves the classifier to a file', function (done) {
classifier.save(classifierFile, function (err, classifier) {
if (err) {
console.log(err)
expect(false).toBe(true)
} else {
DEBUG && console.log('Classifier saved to ' + classifierFile)
expect(fs.existsSync(classifierFile)).toBe(true)
}
done()
})
})
it('loads the classifier from a file', function (done) {
classifier.load(classifierFile, Element, function (err, c) {
if (err) {
console.log(err)
expect(false).toBe(true)
} else {
DEBUG && console.log('Classifier loaded from ' + classifierFile)
// Train the classifier
c.train(nrIterations, minImprovement)
// Compare loaded classifier to original classifier
expect(_.isEqual(classifier.sample, c.sample)).toEqual(true)
classifier.features.features.forEach((f, index) => {
Object.keys(f).forEach(key => {
if (typeof f[key] !== 'function') {
expect(c.features.features[index][key]).toEqual(f[key])
}
})
})
}
done()
})
})
})
================================================
FILE: io_spec/Sample_spec.js
================================================
/*
Copyright (c) 2019, Hugo W.L. ter Doest
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const fs = require('fs')
const Sample = require('../lib/natural/classifiers/maxent/Sample')
const Element = require('../lib/natural/classifiers/maxent/Element')
const Context = require('../lib/natural/classifiers/maxent/Context')
const DEBUG = false
const sampleFile = './io_spec/test_data/sample.json'
describe('Sample class', function () {
// Create sample
let sample = new Sample()
sample.addElement(new Element('x', new Context('0')))
sample.addElement(new Element('y', new Context('0')))
sample.addElement(new Element('x', new Context('1')))
sample.addElement(new Element('y', new Context('1')))
it('saves a sample to a file', function (done) {
sample.save(sampleFile, function (err, sample) {
if (err) {
console.log(err)
expect(false).toBe(true)
} else {
DEBUG && console.log('Sample saved to ' + sampleFile)
expect(fs.existsSync(sampleFile)).toBe(true)
}
done()
})
})
let newSample = null
it('loads a sample from a file', function (done) {
sample.load(sampleFile, Element, function (err, s) {
if (err) {
console.log(err)
expect(false).toBe(true)
} else {
DEBUG && console.log('Sample loaded from ' + sampleFile)
expect(s.size()).toEqual(sample.size())
newSample = s
}
done()
})
if (newSample) {
expect(newSample.size()).toEqual(sample.size())
sample = newSample
}
})
})
================================================
FILE: io_spec/StorageBackend_spec.js
================================================
/*
Copyright (c) 2024, Hugo W.L. ter Doest
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
const storage = require('../lib/natural/util/storage/StorageBackend.js')
const STORAGESERVERS = true
describe('StorageBackend', () => {
let storageBackend = null
beforeEach(() => {
storageBackend = new storage.StorageBackend()
})
if (STORAGESERVERS) { // Test storage servers
const object = {
attr1: 'val1',
attr2: 'val2'
}
// A for loop to test all five storage methods
Object.keys(storage.STORAGE_TYPES).forEach(storageType => {
it('should store data in and retrieve data from ' + storageType, async () => {
await storageBackend.setStorageType(storageType)
const key = await storageBackend.store(object)
expect(key).not.toEqual(null)
const result = await storageBackend.retrieve(key)
expect(result).toEqual(object)
})
})
it('should throw an error for an invalid storage type', async () => {
try {
await storageBackend.setStorageType('invalidType')
} catch (error) {
expect(error.message).toEqual('Invalid storage type')
}
})
it('should throw an error for changing the storage type', async () => {
storageBackend.setStorageType('FILE')
try {
await storageBackend.setStorageType('FILE')
} catch (error) {
expect(error.message).toEqual('Storage type already set')
}
})
}
})
================================================
FILE: io_spec/bayes_classifier_spec.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('../lib/natural')
const sinon = require('sinon')
const baseClassifier = require('../lib/natural/classifiers/classifier')
const storage = require('../lib/natural/util/storage/StorageBackend')
function setupClassifier () {
const classifier = new natural.BayesClassifier()
classifier.addDocument(['fix', 'box'], 'computing')
classifier.addDocument(['write', 'code'], 'computing')
classifier.addDocument(['script', 'code'], 'computing')
classifier.addDocument(['write', 'book'], 'literature')
classifier.addDocument(['read', 'book'], 'literature')
classifier.addDocument(['study', 'book'], 'literature')
return classifier
}
describe('Bayes classifier file I/O', function () {
it('should save and load a working classifier', function (done) {
const classifier = setupClassifier()
classifier.train()
classifier.save('bayes_classifier.json', function (err) {
if (err) {
throw err
}
natural.BayesClassifier.load('bayes_classifier.json', null, function (err, newClassifier) {
if (err) {
throw err
}
newClassifier.addDocument('kick a ball', 'sports')
newClassifier.addDocument('hit some balls', 'sports')
newClassifier.addDocument('kick and punch', 'sports')
newClassifier.train()
expect(newClassifier.classify('a bug in the code')).toBe('computing')
expect(newClassifier.classify('read all the books')).toBe('literature')
expect(newClassifier.classify('kick butt')).toBe('sports')
done()
})
})
})
it('should only execute the callback once when failing to load a classifier', function (done) {
natural.BayesClassifier.load('nonexistant_bayes_classifier.json', null, function (err, newClassifier) {
expect(err.code).toBe('ENOENT')
expect(newClassifier).toBe(undefined)
done()
})
})
describe('Bayes classifier load', function () {
let sandbox = null
beforeEach(function () {
sandbox = sinon.createSandbox()
})
afterEach(function () {
sandbox.restore()
})
it('should pass an error to the callback function', function () {
sandbox.stub(baseClassifier, 'load').callsFake(function (filename, stemmer, cb) {
cb(new Error('An error occurred'))
})
natural.BayesClassifier.load('/spec/test_data/tfidf_document1.txt', null, function (err, newClassifier) {
expect(err).toBeTruthy()
expect(newClassifier).not.toBeTruthy()
})
})
})
describe('Storing and retrieving Bayesian classifiers using the storage backend', function () {
const classifier = setupClassifier()
classifier.train()
Object.keys(storage.STORAGE_TYPES).forEach(storageType => {
it('should be able to save and load a classifier to ' + storageType, async function () {
const store = await new storage.StorageBackend(storageType)
const key = await classifier.saveTo(store)
expect(key).toBeDefined()
const classifierLoaded = await natural.BayesClassifier.loadFrom(key, undefined, store)
expect(Object.getPrototypeOf(classifierLoaded)).toEqual(Object.getPrototypeOf(classifier))
})
})
})
})
================================================
FILE: io_spec/classifier_spec.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const natural = require('../lib/natural')
const Classifier = require('../lib/natural/classifiers/classifier.js')
const storage = require('../lib/natural/util/storage/StorageBackend.js')
const fs = require('fs')
describe('classifier file IO', function () {
describe('save', function () {
const tmpFilename = './test_data/deleteMe'
const nonExistentFilename = '/nonExistentDir/deleteMe'
let classifier
beforeEach(function () {
classifier = new natural.BayesClassifier()
classifier.addDocument('I went to see the doctor of', 'philosophy')
})
afterEach(function () {
if (fs.existsSync(tmpFilename)) {
fs.unlinkSync(tmpFilename)
fs.unlinkSync(nonExistentFilename)
}
})
it('does nothing if called without a callback', function () {
classifier.save(tmpFilename)
expect(fs.existsSync(tmpFilename)).toBe(false)
})
it('fails if writing to a file fails', function () {
classifier.save(nonExistentFilename, function (err) {
expect(err.code).toEqual('ENOENT')
expect(fs.existsSync(tmpFilename)).toBe(false)
})
})
})
describe('load', function () {
it('does nothing if called without a callback', function () {
let result
try {
result = Classifier.load('./test_data/tfidf/tfidf_document1.txt')
} catch (err) {
console.log(err)
}
expect(result).toEqual(undefined)
})
it('does nothing if called with a nonexistent filename', function () {
Classifier.load('./nonexistentFilename', function (err, newClassifier) {
expect(err.code).toEqual('ENOENT')
expect(newClassifier).toEqual(null)
})
})
})
describe('Storing and retrieving Logistic Regression classifiers using the storage backend', function () {
const classifier = new Classifier()
Object.keys(storage.STORAGE_TYPES).forEach(storageType => {
it('should be able to save and load a classifier to ' + storageType, async function () {
const store = await new storage.StorageBackend(storageType)
const key = await classifier.saveTo(store)
expect(key).toBeDefined()
const classifierLoaded = await Classifier.loadFrom(key, store)
expect(Object.getPrototypeOf(classifierLoaded)).toEqual(Object.getPrototypeOf(classifier))
})
})
})
})
================================================
FILE: io_spec/logistic_regression_classifier_spec.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const LogisticRegressionClassifier = require('../lib/natural').LogisticRegressionClassifier
const storage = require('../lib/natural/util/storage/StorageBackend')
function setupClassifier () {
const classifier = new LogisticRegressionClassifier()
classifier.addDocument('i fixed the box', 'computing')
classifier.addDocument('i write code', 'computing')
classifier.addDocument('nasty script code', 'computing')
classifier.addDocument('write a book', 'literature')
classifier.addDocument('read a book', 'literature')
classifier.addDocument('study the books', 'literature')
classifier.train()
return classifier
}
describe('Saving and loading logistic regression classifiers to/from file', function () {
it('should save and load a working classifier', function () {
const classifier = setupClassifier()
classifier.save('lr_classifier.json', function (err) {
if (err) {
throw err
}
LogisticRegressionClassifier.load('lr_classifier.json', null, function (err, newClassifier) {
if (err) {
throw err
}
newClassifier.addDocument('hit some balls', 'sports')
newClassifier.addDocument('kick a ball', 'sports')
newClassifier.addDocument('kick and punch things', 'sports')
newClassifier.train()
expect(newClassifier.classify('a bug in the code')).toBe('computing')
expect(newClassifier.classify('read all the books')).toBe('literature')
expect(newClassifier.classify('kick butt')).toBe('sports')
expect(Object.getPrototypeOf(newClassifier)).toEqual(Object.getPrototypeOf(classifier))
})
})
})
it('should only execute the callback once when failing to load a classifier', function () {
LogisticRegressionClassifier.load('nonexistant_lr_classifier.json', null, function (err, newClassifier) {
if (err) {
expect(err.code).toBe('ENOENT')
expect(newClassifier).toBe(undefined)
}
})
})
describe('Storing and retrieving Logistic Regression classifiers using the storage backend', function () {
const classifier = setupClassifier()
Object.keys(storage.STORAGE_TYPES).forEach(storageType => {
it('should be able to save and load a classifier to ' + storageType, async function () {
const store = await new storage.StorageBackend(storageType)
const key = await classifier.saveTo(store)
expect(key).toBeDefined()
const classifierLoaded = await LogisticRegressionClassifier.loadFrom(key, undefined, store)
expect(Object.getPrototypeOf(classifierLoaded)).toEqual(Object.getPrototypeOf(classifier))
})
})
})
})
================================================
FILE: io_spec/test_data/tfidf/one
================================================
disk document one
================================================
FILE: io_spec/test_data/tfidf/tfidf_document1.txt
================================================
this document is about node.
================================================
FILE: io_spec/test_data/tfidf/tfidf_document2.txt
================================================
this document is about ruby.
================================================
FILE: io_spec/test_data/tfidf/tfidf_document3.txt
================================================
this document is about ruby and node.
================================================
FILE: io_spec/test_data/tfidf/tfidf_document4.txt
================================================
this document is about node. it has node examples
================================================
FILE: io_spec/test_data/tfidf/two
================================================
disk document two
================================================
FILE: io_spec/tfidf_spec.js
================================================
/*
Copyright (c) 2011, Rob Ellis, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const TfIdf = require('../lib/natural/tfidf/tfidf')
let tfidf
describe('tfidf io', function () {
it('should be able to be serialized', function () {
tfidf = new TfIdf()
tfidf.addDocument('document one', 'un')
tfidf.addDocument('document Two', 'deux')
const s = JSON.stringify(tfidf)
expect(s).toBe('{"documents":[{"__key":"un","document":1,"one":1},{"__key":"deux","document":1,"two":1}],"_idfCache":{}}')
})
it('should deserialize', function () {
const s = '{"documents":[{"__key":"un","document":1,"one":1},{"__key":"deux","document":1,"two":1}]}'
const tfidf = new TfIdf(JSON.parse(s))
expect(tfidf.tfidf('one', 0)).toBe(1)
expect(tfidf.tfidf('two', 0)).toBe(0)
})
it('should process files', function () {
const tfidf = new TfIdf()
tfidf.addFileSync('io_spec/test_data/tfidf/one')
tfidf.addFileSync('io_spec/test_data/tfidf/two')
expect(tfidf.tfidf('Document', 0)).toBe(0.5945348918918356)
expect(tfidf.tfidf('one', 0)).toBe(1)
expect(tfidf.tfidf('two', 0)).toBe(0)
})
// Test tf-idf computation on files loaded using readFileSync
it('should load documents from files', function () {
tfidf = new TfIdf()
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document1.txt', null, { node: 0, ruby: 1 })
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document2.txt', null, { node: 1, ruby: 3 })
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document3.txt', null, { node: 0, ruby: 3 })
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document4.txt', null, { node: 2, ruby: 1 })
const correctCalculations = [
1 * (1 + Math.log(4.0 / 4.0)),
0,
2 * (1 + Math.log(4.0 / 4.0)),
1 * (1 + Math.log(4.0 / 3.0))
]
tfidf.tfidfs('node', function (i, measure, k) {
expect(measure).toBe(correctCalculations[k.node])
})
tfidf.tfidfs('ruby', function (i, measure, k) {
expect(measure).toBe(correctCalculations[k.ruby])
})
// addFileSync with restoreCache flag set to true.
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document4.txt', null, { node: 2, ruby: 1 }, true)
})
// Test idf caching when adding documents from addFileSync
it('should update a terms tf-idf score after adding documents from addFileSync', function () {
tfidf = new TfIdf()
// Add 2 documents
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document1.txt', null, 0)
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document2.txt', null, 1)
// check the tf-idf for 'node'
expect(tfidf.tfidf('node', 0)).toBe(1 * (1 + Math.log(2.0 / 2.0)))
// Add 2 more documents
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document3.txt')
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document4.txt')
// Ensure that the tf-idf in the same document has changed to reflect the new idf.
expect(tfidf.tfidf('node', 0)).toBe(1 * (1 + Math.log(4.0 / 4.0)))
})
it('should use the specified encoding for addFileSync', function () {
tfidf = new TfIdf()
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document1.txt', 'base64')
tfidf.addFileSync('io_spec/test_data/tfidf/tfidf_document1.txt', 'utf8')
expect(tfidf.tfidf('dghpcybkb2n1bwvudcbpcybhym91dcbub2rllg', 0)).toBe(1 * (1 + Math.log(2.0 / 2.0)))
})
// Test encoding check for addFileSync
it('should require a valid encoding for addFileSync', function () {
tfidf = new TfIdf()
expect(function () { tfidf.addFileSync('spec/test_data/tfidf_document1.txt', 'foobar') }).toThrow(new Error('Invalid encoding: foobar'))
})
})
================================================
FILE: io_spec/tmp/.this_folder_exists.txt
================================================
================================================
FILE: io_spec/tmp/055ff9e6-bf89-42d0-b44a-4dcc523bf6fc.json
================================================
{"_events":{},"_eventsCount":0,"classifier":{"classFeatures":{"computing":{"0":2,"1":2,"2":2,"3":3,"4":2},"literature":{"2":2,"5":4,"6":2,"7":2}},"classTotals":{"computing":4,"literature":4},"totalExamples":7,"smoothing":1},"docs":[{"label":"computing","text":["fix","box"]},{"label":"computing","text":["write","code"]},{"label":"computing","text":["script","code"]},{"label":"literature","text":["write","book"]},{"label":"literature","text":["read","book"]},{"label":"literature","text":["study","book"]}],"features":{"fix":1,"box":1,"write":2,"code":2,"script":1,"book":3,"read":1,"study":1},"stemmer":{},"lastAdded":6,"Threads":null}
================================================
FILE: io_spec/tmp/7cfb947f-0115-4ef6-b21b-d9554d51caf2.json
================================================
{"attr1":"val1","attr2":"val2"}
================================================
FILE: io_spec/tmp/bf35794b-83e7-4628-8ec2-a0cf451a6fb2.json
================================================
{"_events":{},"_eventsCount":0,"docs":[],"features":{},"stemmer":{},"lastAdded":0,"Threads":null}
================================================
FILE: io_spec/tmp/c2ee3580-26b9-4972-b7f9-e59a933ed021.json
================================================
{"_events":{},"_eventsCount":0,"classifier":{"examples":{"computing":[[1,1,0,0,0,0,0,0,0],[0,0,1,1,0,0,0,0,0],[0,0,0,1,1,1,0,0,0]],"literature":[[0,0,1,0,0,0,1,0,0],[0,0,0,0,0,0,1,1,0],[0,0,0,0,0,0,1,0,1]]},"features":[],"featurePositions":{},"maxFeaturePosition":0,"classifications":["computing","literature"],"exampleCount":6,"theta":[{"elements":[2.0057203693422903,2.0057203693422903,0.0904766662626176,3.447364098636818,0.9696521506748157,0.9696521506748157,-4.840706080886848,-1.2267353995937322,-1.2267353995937322]},{"elements":[-2.0057203693422894,-2.0057203693422894,-0.09047666626261801,-3.4473640986368186,-0.9696521506748156,-0.9696521506748156,4.84070608088685,1.2267353995937313,1.2267353995937313]}]},"docs":[{"label":"computing","text":["fix","box"]},{"label":"computing","text":["write","code"]},{"label":"computing","text":["nasti","script","code"]},{"label":"literature","text":["write","book"]},{"label":"literature","text":["read","book"]},{"label":"literature","text":["studi","book"]}],"features":{"fix":1,"box":1,"write":2,"code":2,"nasti":1,"script":1,"book":3,"read":1,"studi":1},"stemmer":{},"lastAdded":6,"Threads":null}
================================================
FILE: io_spec/wordnet_index_spec.js
================================================
/*
Copyright (c) 2014, John Markos O'Neill
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const IndexFile = require('../lib/natural/wordnet/index_file')
describe('indexFile', function () {
describe('getFileSize', function () {
it('should look up a word if the file exists', function () {
const indexFile = new IndexFile('./test_data/', 'document1.txt')
indexFile.lookupFromFile('node', function (indexRecord) {
})
})
it('should fail to lookup a word if the file does not exist', function () {
const indexFile = new IndexFile('spec/test_data/', 'nonexistent.txt')
indexFile.lookupFromFile('node', function (err) {
err.code.should.equal('ENOENT')
})
})
})
})
================================================
FILE: io_spec/wordnet_spec.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const WordNet = require('../lib/natural/wordnet/wordnet')
describe('wordnet', function () {
it('should lookup synonyms', function (done) {
const wordnet = new WordNet()
wordnet.lookupSynonyms('entity', function (records) {
expect(records.length).toBe(3)
done()
})
})
function expectResults (records) {
expect(records.length).toBe(3)
expect(records[0].synsetOffset).toBe(4431553)
expect(records[1].synsetOffset).toBe(2137)
expect(records[2].synsetOffset).toBe(1930)
}
it('should lookup synonyms give a synset offset and a pos', function (done) {
const wordnet = new WordNet()
wordnet.getSynonyms(1740, 'n', function (records) {
expectResults(records)
done()
})
})
it('should lookup synonyms via a provided synset object', function (done) {
const wordnet = new WordNet()
wordnet.lookup('entity', function (results) {
wordnet.getSynonyms(results[0], function (records) {
expectResults(records)
done()
})
})
})
it('should add records but once', function (done) {
const wordnet = new WordNet()
wordnet.lookup('node', function (records) {
expect(records.length).toBe(8)
expect(records[0].lemma).toBe('node')
done()
})
})
})
================================================
FILE: io_spec/wordnet_test.ts
================================================
import { WordNet } from '../lib/natural/wordnet'
let wordnet = new WordNet()
wordnet.lookup('node', function (results) {
results.forEach(function (result) {
console.log('------------------------------------')
console.log(result.synsetOffset)
console.log(result.pos)
console.log(result.lemma)
console.log(result.synonyms)
console.log(result.pos)
console.log(result.gloss)
})
wordnet = new WordNet()
wordnet.get(4424418, 'n', function (result) {
console.log('------------------------------------')
console.log('Looking up an entry by id 4424418')
console.log(result.lemma)
console.log(result.pos)
console.log(result.gloss)
console.log(result.synonyms)
})
})
================================================
FILE: lib/natural/analyzers/SenType.ts
================================================
/*
Copyright (c) 2024,
Hugo W.L. ter Doest <https://github.com/Hugo-ter-Doest>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export const enum SenType {
Unknown = 'UNKNOWN',
Command = 'COMMAND',
Interrogative = 'INTERROGATIVE',
Exclamatory = 'EXCLAMATORY',
Declarative = 'DECLARATIVE'
}
================================================
FILE: lib/natural/analyzers/index.d.ts
================================================
/*
Copyright (c) 2022,
Hugo W.L. ter Doest <https://github.com/Hugo-ter-Doest>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import type { SenType } from './SenType'
declare interface TaggedWord {
token: string
pos: string
pp?: boolean
spos?: string
added?: boolean
[key: string]: any
}
declare type PunctuationMapping = Array<Record<string, string>> | ''
declare type PunctuationFunction = () => PunctuationMapping
declare interface TaggedSentence {
tags: TaggedWord[]
punct: PunctuationFunction
}
declare type CallbackFunction = (obj: SentenceAnalyzer) => void
export class SentenceAnalyzer {
posObj: TaggedSentence
senType: SenType | null
constructor (pos: TaggedSentence, cbf: CallbackFunction)
part (cbf: CallbackFunction): void
prepositionPhrases (): void
subjectToString (): string
predicateToString (): string
implicitYou (): boolean
toString (): string
type (cbf: CallbackFunction): string
}
================================================
FILE: lib/natural/analyzers/index.js
================================================
/*
Copyright (c) 2011, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
exports.SentenceAnalyzer = require('./sentence_analyzer')
================================================
FILE: lib/natural/analyzers/sentence_analyzer.js
================================================
/*
Copyright (c) 2011, Rob Ellis, Chris Umbel
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
'use strict'
const _ = require('underscore')
/*
Sentences Analyzer Class
From http://www.writingcentre.uottawa.ca/hypergrammar/sntpurps.html
Take a POS input and analyse it for
- Type of Sentense
- Interrogative
- Tag Questions
-
- Declarative
- Exclamatory
- Imperative
- Parts of a Sentense
- Subject
- Predicate
- Show Preposition Phrases
*/
class SentenceAnalyzer {
constructor (pos, callbackFunction) {
this.posObj = pos
this.senType = null
callbackFunction(this)
}
part (callbackFunction) {
const subject = []
const predicat = []
let verbFound = false
this.prepositionPhrases()
for (let i = 0; i < this.posObj.tags.length; i++) {
if (this.posObj.tags[i].pos === 'VB') {
if (i === 0) {
verbFound = true
} else {
// We need to Test for any EX before the VB
if (this.posObj.tags[i - 1].pos !== 'EX') {
verbFound = true
} else {
predicat.push(this.posObj.tags[i].token)
}
}
}
// Add Pronoun Phrase (pp) Or Subject Phrase (sp)
if (!verbFound) {
if (this.posObj.tags[i].pp !== true) { this.posObj.tags[i].spos = 'SP' }
subject.push(this.posObj.tags[i].token)
} else {
if (this.posObj.tags[i].pp !== true) { this.posObj.tags[i].spos = 'PP' }
predicat.push(this.posObj.tags[i].token)
}
}
if (subject.length === 0) {
this.posObj.tags.push({ token: 'You', spos: 'SP', pos: 'PRP', added: true })
}
callbackFunction(this)
}
// Takes POS and removes IN to NN or NNS
// Adds a PP for each prepositionPhrases
prepositionPhrases () {
let remove = false
for (let i = 0; i < this.posObj.tags.length; i++) {
if (this.posObj.tags[i].pos.match('IN')) {
remove = true
}
if (remove) {
this.posObj.tags[i].pp = true
}
if (this.posObj.tags[i].pos.match('NN')) {
remove = false
}
}
}
subjectToString () {
return this.posObj.tags.map(function (t) {
if (t.spos === 'SP' || t.spos === 'S') {
return t.token
} else return null
}).join(' ')
}
predicateToString () {
return this.posObj.tags.map(function (t) {
if (t.spos === 'PP' || t.spos === 'P') {
return t.token
} else return null
}).join(' ')
}
implicitYou () {
for (let i = 0; i < this.posObj.tags.length; i++) {
if (this.posObj.tags[i].added) {
return true
}
}
return false
}
toString () {
return this.posObj.tags.map(function (t) { return t.token }).join(' ')
}
// This is quick and incomplete.
type (cbf) {
const callbackFunction = cbf || false
// Check for implicit you before popping a tag.
const implicitYou = this.implicitYou()
// FIXME - punct seems useless
let lastElement = this.posObj.punct()
// console.log(lastElement)
lastElement = (lastElement.length !== 0) ? lastElement.pop() : this.posObj.tags.pop()
// console.log(lastElement)
if (lastElement.pos !== '.') {
if (implicitYou) {
this.senType = 'COMMAND'
} else if (_.contains(['WDT', 'WP', 'WP$', 'WRB'], this.posObj.tags[0].pos)) {
// Sentences that start with: who, what where when why and how, then they are questions
this.senType = 'INTERROGATIVE'
} else if (_.contains(['PRP'], lastElement.pos)) {
// Sentences that end in a Personal pronoun are most likely questions
// eg. We should run away, should we [?]
// eg. You want to see that again, do you [?]
this.senType = 'INTERROGATIVE'
} else {
this.senType = 'UNKNOWN'
}
} else {
switch (lastElement.token) {
case '?':
this.senType = 'INTERROGATIVE'
break
case '!':
this.senType = (implicitYou) ? 'COMMAND' : 'EXCLAMATORY'
break
case '.':
this.senType = (implicitYou) ? 'COMMAND' : 'DECLARATIVE'
break
}
}
if (callbackFunction && _.isFunction(callbackFunction)) {
callbackFunction(this)
} else {
return this.senType
}
}
}
module.exports = SentenceAnalyzer
================================================
FILE: lib/natural/brill_pos_tagger/data/Dutch/README.txt
================================================
Transformation rules and lexicon are from
https://mlnl.net/jg/software/bnl/
================================================
FILE: lib/natural/brill_pos_tagger/data/Dutch/brill_CONTEXTRULES.jg
================================================
Pron(betr,neut,zelfst) Pron(aanw,neut,attr) PREVTAG Prep(voor)
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Adv(gew,geen_func,stell,onverv)
Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) NEXT1OR2TAG N(soort,ev,neut)
Prep(voor) Adv(deel_v) NEXT1OR2TAG STAART
Prep(voor) Adv(deel_v) NEXTTAG Prep(voor_inf)
Adj(adv,stell,onverv) Adj(attr,stell,onverv) PREV1OR2TAG Art(onbep,zijd_of_onzijd,neut)
Pron(betr,neut,zelfst) Pron(aanw,neut,attr) NEXTTAG N(soort,ev,neut)
Prep(voor) Adv(deel_v) NEXTTAG Prep(voor)
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG Adv(gew,geen_func,stell,onverv)
Conj(onder,met_fin) Pron(aanw,neut,attr) NEXTTAG N(soort,ev,neut)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREVTAG N(soort,mv,neut)
Adv(gew,er) Adv(pron,er) WDAND2TAGAFT er Prep(voor)
Prep(voor) Adv(deel_v) NEXTTAG Punc(komma)
Conj(neven) Adv(gew,geen_func,stell,onverv) PREVTAG Adv(gew,geen_func,stell,onverv)
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG V(hulp_of_kopp,ott,3,ev)
Pron(onbep,neut,zelfst) Pron(bez,2,ev,neut,attr) NEXTTAG N(soort,ev,neut)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXT1OR2TAG Art(bep,zijd_of_mv,neut)
V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) NEXTTAG V(trans,inf)
Pron(vrag,neut,attr) Pron(betr,neut,zelfst) PREV1OR2TAG Prep(voor)
V(hulp,ott,3,ev) V(hulp,ott,1,ev) NEXT1OR2OR3TAG Pron(per,1,ev,nom)
Pron(betr,neut,zelfst) Pron(aanw,neut,zelfst) PREVTAG Conj(neven)
Pron(onbep,gen,attr) Adv(gew,geen_func,stell,onverv) CURWD anders
Adj(attr,stell,onverv) Adj(adv,stell,onverv) PREV1OR2OR3TAG N(soort,mv,neut)
Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2OR3TAG Adv(gew,geen_func,vergr,onverv)
Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,zelfst,vergr,onverv) NEXT1OR2OR3TAG Conj(onder,met_fin)
Adv(gew,er) Adv(pron,er) NEXT1OR2OR3TAG Adv(deel_v)
Adv(deel_v) Adv(deel_adv) PREV1OR2OR3TAG Adv(pron,er)
Prep(voor) Adv(deel_adv) NEXTTAG Punc(punt)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXT1OR2OR3TAG Adv(gew,aanw)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,inf) NEXTTAG Punc(punt)
Prep(voor_inf) Adv(gew,geen_func,stell,onverv) NEXTTAG Adj(attr,stell,onverv)
Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) PREV1OR2OR3TAG Prep(voor)
V(hulp,ott,3,ev) V(hulp,ott,1,ev) PREV1OR2OR3TAG Pron(per,1,ev,nom)
Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD werkelijk
Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2TAG Adj(adv,vergr,onverv)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,inf) NEXTTAG Punc(komma)
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) PREVTAG Conj(neven)
N(soort,ev,neut) Adj(attr,stell,onverv) SURROUNDTAG Art(onbep,zijd_of_onzijd,neut) N(soort,ev,neut)
V(trans,inf) V(trans,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG Punc(komma)
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG Prep(voor)
V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2TAG STAART
Adj(attr,stell,verv_neut) N(soort,ev,neut) NEXTTAG Prep(voor)
N(soort,ev,neut) V(trans,ott,1,ev) PREVTAG Pron(per,1,ev,nom)
Pron(per,1,ev,dat_of_acc) Pron(ref,1,ev) PREV1OR2TAG Pron(per,1,ev,nom)
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) PREVTAG V(hulp_of_kopp,ott,3,ev)
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Adv(gew,aanw)
Adv(gew,aanw) Conj(onder,met_fin) NEXTTAG Pron(per,3,ev,nom)
Conj(neven) Adv(gew,geen_func,stell,onverv) WDNEXTTAG maar Art(onbep,zijd_of_onzijd,neut)
Prep(voor_inf) Adv(gew,geen_func,stell,onverv) NEXT1OR2TAG Adj(adv,stell,onverv)
V(intrans,ovt,1_of_2_of_3,ev) V(trans,ovt,1_of_2_of_3,ev) CURWD dacht
V(trans,inf) V(trans,ott,1_of_2_of_3,mv) PREV1OR2TAG STAART
N(soort,mv,neut) V(trans,inf) PREVTAG V(hulp,ovt,1_of_2_of_3,ev)
Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv) NEXTTAG Punc(haak_sluit)
V(trans,inf) V(trans,ott,1_of_2_of_3,mv) PREV1OR2WD en
Pron(onbep,neut,zelfst) Pron(per,2,ev,nom) NEXT1OR2TAG Adj(adv,stell,onverv)
V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXT2TAG N(soort,mv,neut)
V(hulp,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) NEXT1OR2TAG Adv(gew,geen_func,stell,onverv)
Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) NEXTTAG Adj(attr,stell,verv_neut)
Adv(gew,er) Adv(pron,er) PREV1OR2WD ik
Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2OR3TAG Adj(attr,vergr,onverv)
Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) NEXTTAG N(soort,ev,neut)
Adv(gew,geen_func,stell,onverv) N(soort,ev,neut) PREVTAG Art(bep,zijd_of_mv,neut)
V(intrans,inf) V(hulp,inf) NEXTTAG N(soort,mv,neut)
Pron(onbep,neut,zelfst) Pron(per,2,ev,dat_of_acc) PREVTAG Prep(voor)
V(intrans,teg_dw,onverv) Adv(gew,geen_func,stell,onverv) CURWD voortdurend
Pron(onbep,neut,zelfst) Pron(onbep,neut,attr) WDNEXTTAG ander N(soort,ev,neut)
N(eigen,ev,neut) N(soort,ev,neut) NEXTWD aan
Adj(attr,stell,onverv) Adj(adv,stell,onverv) NEXTTAG Adj(attr,stell,onverv)
Adj(attr,stell,onverv) N(soort,ev,neut) PREV1OR2TAG Art(bep,onzijd,neut)
Adj(adv,stell,onverv) Adj(attr,stell,onverv) CURWD hard
Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD ruim
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Pron(aanw,neut,attr)
N(soort,mv,neut) V(intrans,inf) PREVTAG V(hulp,inf)
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT1OR2OR3TAG Punc(punt)
V(hulp,ott,3,ev) V(trans,ott,3,ev) RBIGRAM heeft een
Prep(voor) N(eigen,ev,neut) WDNEXTTAG Van N(eigen,ev,neut)
V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) PREV1OR2TAG V(hulp,ovt,1_of_2_of_3,ev)
Conj(neven) Adv(gew,geen_func,stell,onverv) PREV1OR2OR3TAG Pron(per,2,ev,nom)
V(hulp,ovt,1_of_2_of_3,ev) V(trans,ovt,1_of_2_of_3,ev) NEXT1OR2OR3TAG Conj(onder,met_fin)
Pron(vrag,neut,attr) Pron(betr,neut,zelfst) PREVTAG Pron(onbep,neut,zelfst)
Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,zelfst,vergr,onverv) PREV1OR2OR3TAG Conj(neven)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,inf) PREV1OR2TAG Prep(voor_inf)
Pron(bez,1,mv,neut,attr) Pron(per,1,mv,dat_of_acc) PREV1OR2OR3TAG Punc(komma)
Pron(betr,neut,zelfst) Pron(aanw,neut,attr) NEXTTAG Adj(attr,stell,verv_neut)
Pron(vrag,neut,attr) Pron(onbep,neut,attr) PREVTAG Adv(gew,geen_func,stell,onverv)
Pron(onbep,neut,attr) Pron(onbep,neut,zelfst) NEXTWD van
V(intrans,verl_dw,onverv) V(trans,verl_dw,onverv) PREV1OR2OR3TAG N(soort,ev,neut)
Pron(aanw,neut,zelfst) Pron(betr,neut,zelfst) PREVTAG N(soort,ev,neut)
V(hulp,imp) V(hulp,ott,3,ev) CURWD laat
Adj(attr,stell,onverv) Adv(gew,geen_func,stell,onverv) CURWD opeens
Adj(adv,stell,onverv) Adj(attr,stell,onverv) NEXTTAG V(hulp_of_kopp,ott,3,ev)
Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD haastig
Adj(adv,stell,onverv) Adj(attr,stell,onverv) SURROUNDTAG Adv(gew,geen_func,stell,onverv) Punc(punt)
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXTTAG V(hulp_of_kopp,ott,3,ev)
N(soort,ev,neut) Adj(adv,stell,onverv) PREVTAG Adv(gew,aanw)
N(soort,mv,neut) V(trans,inf) PREVWD moeten
Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv) NEXTTAG V(hulp_of_kopp,ovt,1_of_2_of_3,ev)
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT2TAG Pron(per,1,ev,nom)
N(soort,ev,neut) N(eigen,ev,neut) CURWD februari
V(hulp,ott,3,ev) V(trans,ott,3,ev) NEXTTAG Punc(komma)
V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTTAG Adv(gew,geen_func,stell,onverv)
V(hulp,ott,3,ev) V(trans,ott,3,ev) WDNEXTTAG heeft Prep(voor)
Pron(onbep,neut,zelfst) Pron(per,2,ev,nom) PREV1OR2OR3TAG Punc(aanhaal_dubb)
V(trans,ott,3,ev) V(trans,ott,2,ev) PREV1OR2OR3TAG Pron(per,2,ev,nom)
Adj(attr,stell,onverv) Adj(adv,stell,onverv) PREV1OR2OR3TAG Pron(per,2,ev,nom)
Prep(voor) Adv(deel_v) NEXTTAG Conj(onder,met_fin)
N(soort,mv,neut) V(trans,verl_dw,onverv) CURWD verloren
Adj(attr,stell,onverv) N(soort,ev,neut) WDAND2TAGBFR Prep(voor) dood
Pron(aanw,neut,attr) Pron(aanw,neut,zelfst) NEXTTAG Prep(voor)
Prep(voor) N(eigen,ev,neut) SURROUNDTAG N(eigen,ev,neut) N(eigen,ev,neut)
Adv(gew,aanw) Adv(pron,aanw) NEXT1OR2TAG Pron(per,1,ev,nom)
Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXTTAG Adv(gew,geen_func,stell,onverv)
N(soort,ev,neut) V(trans,ovt,1_of_2_of_3,ev) PREVTAG Pron(per,3,ev,nom)
V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) PREV1OR2TAG Prep(voor)
Adv(gew,er) Adv(pron,er) PREV2TAG Conj(onder,met_fin)
Prep(voor) Adv(deel_adv) PREV1OR2OR3TAG Adv(pron,er)
Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXT1OR2TAG Art(onbep,zijd_of_onzijd,neut)
Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv) NEXTTAG N(soort,ev,neut)
Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2TAG Adj(attr,stell,onverv)
V(hulp,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) PREV1OR2TAG Pron(bez,3,mv,neut,attr)
Conj(neven) Adv(gew,geen_func,stell,onverv) PREV1OR2WD ik
Conj(neven) Conj(onder,met_fin) PREV1OR2WD net
Pron(vrag,neut,attr) Pron(betr,neut,zelfst) NEXTTAG N(eigen,ev,neut)
Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv) NEXT1OR2OR3TAG Num(hoofd,bep,zelfst,onverv)
Art(bep,onzijd,neut) Pron(per,3,ev,nom) NEXTTAG Art(onbep,zijd_of_onzijd,neut)
V(intrans,ovt,1_of_2_of_3,ev) V(hulp,ovt,1_of_2_of_3,ev) CURWD begon
Adv(gew,geen_func,stell,onverv) N(soort,ev,neut) PREV1OR2WD op
N(soort,ev,neut) Num(hoofd,bep,attr,onverv) CURWD 7
Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,zelfst,vergr,onverv) PREV1OR2TAG Prep(voor)
V(trans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG STAART
V(intrans,ott,1_of_2_of_3,mv) V(intrans,inf) NEXT1OR2OR3TAG Conj(neven)
V(intrans,inf) V(hulp,inf) NEXTTAG V(trans,inf)
Adv(gew,geen_func,stell,onverv) Conj(onder,met_fin) PREVTAG Punc(komma)
Adv(gew,geen_func,stell,onverv) Adj(attr,stell,onverv) CURWD tevreden
V(trans,ott,1_of_2_of_3,mv) V(intrans,inf) CURWD beginnen
V(trans,ott,1,ev) V(trans,ott,2,ev) NEXTTAG Pron(per,2,ev,nom)
V(intrans,teg_dw,verv_neut) N(soort,ev,neut) CURWD schande
V(intrans,ott,3,ev) N(soort,ev,neut) NEXT1OR2OR3TAG Prep(voor_inf)
N(soort,ev,neut) Adj(attr,vergr,onverv) PREVWD steeds
N(soort,ev,neut) V(intrans,ott,3,ev) WDNEXTTAG sterft Prep(voor)
N(eigen,ev,neut) Adj(attr,stell,verv_neut) SURROUNDTAG STAART N(soort,mv,neut)
V(trans,ovt,1_of_2_of_3,ev) Adj(attr,stell,verv_neut) PREV1OR2TAG Prep(voor)
V(intrans,inf) V(hulp,inf) NEXTTAG V(intrans,inf)
V(hulp,inf) V(trans,inf) NEXTTAG Punc(punt)
V(refl,ott,3,ev) V(trans,ott,3,ev) CURWD voelt
Pron(bez,3,ev,neut,attr) V(intrans,ott,1_of_2_of_3,mv) PREVTAG Adv(gew,er)
V(hulp,ott,2,ev) V(hulp,ott,3,ev) CURWD hoeft
Pron(onbep,neut,zelfst) Pron(ref,2,ev) PREV1OR2WD je
V(intrans,teg_dw,verv_neut) Pron(onbep,neut,attr) WDNEXTTAG verschillende N(soort,mv,neut)
Adv(gew,vrag) Adj(attr,stell,onverv) PREV1OR2OR3TAG V(hulp_of_kopp,ott,3,ev)
Adj(attr,vergr,verv_neut) Adj(attr,stell,verv_neut) CURWD nare
V(trans,ott,1,ev) Int CURWD hoor
V(intrans,ovt,1_of_2_of_3,mv) V(intrans,verl_dw,onverv) CURWD verdwenen
Adv(pron,vrag) Adv(pron,betr) CURWD waardoor
N(eigen,ev,neut) N(soort,ev,neut) PREVTAG Art(onbep,zijd_of_onzijd,neut)
N(eigen,ev,neut) N(soort,ev,neut) NEXT1OR2WD worden
N(eigen,ev,neut) N(soort,ev,neut) NEXTBIGRAM Conj(neven) N(soort,ev,neut)
N(eigen,ev,neut) N(soort,ev,neut) SURROUNDTAG STAART Prep(voor)
N(eigen,ev,neut) N(soort,ev,neut) CURWD Koningin
Adj(adv,stell,onverv) Adj(attr,stell,onverv) PREV1OR2TAG V(hulp_of_kopp,ott,1_of_2_of_3,mv)
Adj(attr,stell,onverv) Adj(adv,stell,onverv) PREVTAG STAART
Adj(adv,stell,onverv) Adj(attr,stell,onverv) WDPREVTAG N(soort,mv,neut) nodig
Adj(attr,stell,onverv) Adj(adv,stell,onverv) NEXTTAG Prep(voor_inf)
Adj(adv,stell,onverv) Adj(attr,stell,onverv) CURWD eenzaam
Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD regelmatig
Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD geestelijk
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) PREVTAG Pron(per,2,ev,nom)
V(trans,inf) V(intrans,inf) NEXT1OR2TAG N(eigen,ev,neut)
V(intrans,ovt,1_of_2_of_3,ev) V(hulp,ovt,1_of_2_of_3,ev) NEXT1OR2TAG V(intrans,inf)
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXTTAG Punc(komma)
V(trans,inf) V(intrans,inf) PREV1OR2OR3TAG Adj(adv,vergr,onverv)
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Pron(onbep,neut,zelfst)
V(trans,inf) V(intrans,inf) CURWD wennen
Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Conj(onder,met_inf)
N(soort,ev,neut) V(trans,verl_dw,onverv) PREV1OR2TAG V(hulp_of_kopp,ovt,1_of_2_of_3,mv)
N(soort,ev,neut) Adj(adv,stell,onverv) NEXTTAG V(trans,verl_dw,verv_neut)
Prep(voor) Adv(deel_adv) NEXTTAG V(trans,inf)
N(soort,ev,neut) Adj(adv,stell,onverv) NEXTBIGRAM Adj(attr,stell,onverv) N(soort,ev,neut)
N(soort,mv,neut) V(trans,inf) PREV1OR2TAG Pron(per,3,ev,dat_of_acc)
Prep(voor) Adv(deel_adv) NEXTBIGRAM V(intrans,ott,3,ev) Punc(punt)
V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2TAG Conj(neven)
N(soort,mv,neut) V(trans,inf) PREV1OR2OR3TAG V(hulp,ott,2,ev)
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG V(intrans,ott,3,ev)
V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG Punc(komma)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREVTAG Pron(per,1,mv,nom)
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT1OR2TAG V(trans,ott,3,ev)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTTAG Prep(voor)
Conj(onder,met_inf) Prep(voor) NEXTTAG N(soort,mv,neut)
V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREVTAG V(trans,verl_dw,onverv)
V(hulp,ott,3,ev) V(trans,ott,3,ev) WDPREVTAG Pron(per,3,ev,nom) heeft
Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT1OR2WD doen
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTTAG V(trans,verl_dw,onverv)
V(hulp_of_kopp,ott,1_of_2_of_3,mv) V(hulp_of_kopp,inf) PREV1OR2TAG V(hulp,ott,3,ev)
N(soort,ev,neut) Adj(attr,stell,verv_neut) PREVBIGRAM Adj(attr,stell,verv_neut) Punc(komma)
N(soort,mv,neut) V(trans,verl_dw,onverv) CURWD ingenomen
Conj(onder,met_inf) Prep(voor) NEXTTAG N(soort,ev,neut)
V(trans,ovt,1_of_2_of_3,ev) V(intrans,ovt,1_of_2_of_3,ev) PREVTAG N(eigen,ev,neut)
Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTWD het
Pron(aanw,neut,attr) Pron(aanw,neut,zelfst) NEXTTAG V(hulp_of_kopp,ott,3,ev)
Adv(gew,aanw) Adv(pron,aanw) PREVTAG Punc(punt_komma)
Adv(deel_v) Adv(deel_adv) RBIGRAM bij ,
V(intrans,inf) V(trans,inf) CURWD schrijven
Pron(onbep,neut,zelfst) Pron(per,2,ev,nom) PREV1OR2OR3TAG N(eigen,ev,neut)
Prep(voor) Adv(deel_v) NEXTTAG V(hulp,inf)
N(soort,mv,neut) V(trans,verl_dw,onverv) CURWD betrokken
V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREV1OR2WD en
Pron(aanw,neut,zelfst) Conj(onder,met_fin) WDAND2TAGAFT Dat N(soort,ev,neut)
Adv(deel_v) Adv(deel_adv) PREV1OR2OR3TAG Adv(gew,er)
Adv(gew,er) Adv(pron,er) NEXT1OR2OR3TAG Adv(deel_adv)
N(soort,ev,neut) N(soort,mv,neut) WDNEXTTAG dll Num(hoofd,bep,attr,onverv)
N(eigen,ev,neut) N(eigen,mv,neut) NEXTWD Staten
Adj(attr,stell,verv_neut) N(soort,ev,neut) NEXTTAG Punc(punt)
V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG Adj(attr,stell,verv_neut)
V(hulp,ovt,1_of_2_of_3,ev) V(trans,ovt,1_of_2_of_3,ev) SURROUNDTAG N(soort,ev,neut) Punc(komma)
Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXTTAG Prep(voor)
Prep(voor) N(eigen,ev,neut) NEXTTAG Art(bep,zijd_of_mv,gen)
Art(bep,zijd_of_mv,neut) N(eigen,ev,neut) WDNEXTTAG De N(eigen,ev,neut)
Adj(attr,stell,verv_neut) Adj(zelfst,stell,verv_neut) PREVWD Het
N(eigen,ev,neut) V(trans,imp) SURROUNDTAG STAART Adv(gew,aanw)
N(eigen,ev,neut) N(eigen,mv,neut) PREVTAG N(eigen,mv,neut)
Adv(gew,aanw) Conj(onder,met_fin) LBIGRAM , toen
V(hulp,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) RBIGRAM hebben ,
V(trans,ott,1_of_2_of_3,mv) V(hulp,ott,1_of_2_of_3,mv) PREV1OR2TAG STAART
V(hulp,inf) V(hulp,ott,1_of_2_of_3,mv) NEXTTAG Pron(per,1,mv,nom)
Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXTTAG V(trans,verl_dw,onverv)
Pron(aanw,neut,attr) Pron(betr,neut,zelfst) WDPREVTAG N(soort,mv,neut) die
V(hulp,ott,3,ev) V(hulp,ott,2,ev) PREVTAG Pron(per,2,ev,nom)
Pron(bez,1,mv,neut,attr) Pron(per,1,mv,dat_of_acc) NEXTTAG Punc(punt)
N(eigen,ev,neut) Prep(voor) SURROUNDTAG STAART Art(bep,zijd_of_mv,neut)
Conj(neven) Adv(gew,geen_func,stell,onverv) PREVTAG Adv(gew,aanw)
Pron(betr,neut,zelfst) Pron(aanw,neut,zelfst) PREV1OR2TAG Conj(onder,met_fin)
Pron(aanw,neut,zelfst) Pron(aanw,neut,attr) NEXTBIGRAM Adj(attr,stell,verv_neut) N(soort,ev,neut)
Prep(voor_inf) Adv(gew,geen_func,stell,onverv) NEXTTAG Adj(attr,stell,verv_neut)
Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv) PREV1OR2OR3TAG Num(hoofd,bep,attr,onverv)
N(soort,ev,neut) V(intrans,inf) PREVTAG Prep(voor_inf)
Prep(voor_inf) Prep(voor) NEXTTAG N(soort,ev,neut)
Adj(adv,stell,onverv) N(soort,ev,neut) WDAND2AFT geheel .
V(trans,ott,3,ev) N(soort,ev,neut) PREVTAG Art(onbep,zijd_of_onzijd,neut)
V(trans,inf) V(trans,inf,subst) PREV1OR2TAG Art(bep,onzijd,neut)
V(hulp,ott,3,ev) V(hulp,ott,2,ev) NEXTWD u
Adv(gew,geen_func,stell,onverv) N(soort,ev,neut) PREVTAG Adj(attr,stell,verv_neut)
Adv(deel_v) Prep(voor) WDNEXTTAG tot Prep(voor)
V(hulp,ovt,1_of_2_of_3,mv) V(trans,ovt,1_of_2_of_3,mv) CURWD hadden
Adv(gew,geen_func,stell,onverv) Pron(onbep,neut,attr) NEXTWD die
V(trans,inf) V(refl,inf) PREV1OR2OR3TAG Pron(ref,3,ev_of_mv)
V(hulp,inf) V(hulp,ott,1_of_2_of_3,mv) WDNEXTTAG moeten V(trans,inf)
V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) NEXTBIGRAM V(trans,inf) Punc(komma)
Pron(aanw,neut,zelfst) Pron(betr,neut,zelfst) SURROUNDTAG Punc(komma) Prep(voor)
N(eigen,ev,neut) Int SURROUNDTAG Punc(aanhaal_dubb) Punc(komma)
N(eigen,ev,neut) Art(bep,zijd_of_mv,neut) LBIGRAM STAART De
Conj(onder,met_fin) Conj(neven) PREV1OR2WD zowel
Adv(gew,geen_func,stell,onverv) Adj(attr,stell,onverv) NEXTTAG Conj(neven)
Adj(attr,stell,verv_neut) Pron(onbep,neut,attr) WDNEXTTAG Elke N(soort,ev,neut)
Adj(adv,vergr,onverv) Adj(attr,vergr,onverv) PREV1OR2TAG Adv(gew,geen_func,stell,onverv)
V(trans,ovt,1_of_2_of_3,ev) N(soort,ev,neut) PREVTAG Adj(attr,stell,verv_neut)
V(intrans,teg_dw,verv_neut) N(soort,ev,neut) CURWD bende
V(hulp,inf) V(hulp,ott,1_of_2_of_3,mv) WDPREVTAG N(soort,ev,neut) kunnen
Pron(vrag,neut,attr) Pron(onbep,neut,attr) NEXTTAG N(soort,mv,neut)
Pron(betr,neut,zelfst) Pron(vrag,neut,attr) NEXT1OR2OR3TAG Adv(gew,aanw)
Adv(gew,vrag) Adv(pron,vrag) PREVTAG Pron(onbep,neut,zelfst)
Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,attr,vergr,onverv) NEXT1OR2TAG N(soort,mv,neut)
V(trans,ott,1,ev) V(trans,ott,3,ev) PREVTAG Pron(onbep,neut,zelfst)
V(hulp_of_kopp,ovt,1_of_2_of_3,mv) V(intrans,ovt,1_of_2_of_3,mv) NEXTTAG Adv(gew,er)
Pron(onbep,neut,zelfst) Pron(per,2,ev,dat_of_acc) PREV1OR2TAG Pron(per,1,ev,nom)
Num(hoofd,bep,attr,onverv) Num(rang,bep,attr,onverv) PREVTAG Art(bep,onzijd,neut)
N(soort,ev,neut) Int CURWD oh
V(intrans,ott,1,ev) N(soort,ev,neut) NEXT1OR2OR3TAG Prep(voor)
Pron(aanw,neut,zelfst) Pron(betr,neut,zelfst) SURROUNDTAG Punc(komma) Adv(gew,geen_func,stell,onverv)
Adj(zelfst,stell,verv_mv) N(soort,mv,neut) CURWD armen
V(trans,ott,1,ev) V(intrans,ovt,1_of_2_of_3,ev) NEXT1OR2WD in
V(intrans,inf) N(soort,mv,neut) WDNEXTTAG verschillen Prep(voor)
Prep(voor) V(trans,imp) NEXTTAG Pron(aanw,neut,attr)
N(eigen,ev,neut) Art(bep,zijd_of_mv,neut) WDNEXTTAG DE N(eigen,ev,neut)
Adv(gew,aanw) Conj(onder,met_fin) WDAND2TAGBFR Art(bep,zijd_of_mv,neut) toen
V(trans,ovt,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) NEXTTAG Pron(per,3,ev_of_mv,nom)
V(trans,ovt,1_of_2_of_3,ev) Conj(onder,met_fin) CURWD zodra
V(intrans,verl_dw,verv_neut) V(intrans,ovt,1_of_2_of_3,ev) CURWD gebeurde
V(intrans,teg_dw,onverv) Adv(gew,geen_func,stell,onverv) CURWD dringend
V(hulp,ovt,1_of_2_of_3,ev) Adj(attr,stell,verv_neut) PREV1OR2TAG Prep(voor)
V(intrans,ott,3,ev) N(soort,ev,neut) PREVTAG Adj(attr,stell,verv_neut)
V(hulp,inf) Num(hoofd,bep,attr,onverv) CURWD veertien
Prep(voor) N(soort,mv,neut) NEXTWD zijn
Num(hoofd,onbep,zelfst,stell,onverv) Num(hoofd,onbep,attr,stell,onverv) NEXTTAG N(soort,mv,neut)
Art(bep,zijd_of_mv,gen) N(eigen,ev,neut) PREVTAG N(eigen,ev,neut)
N(eigen,ev,neut) N(soort,ev,neut) PREVTAG Adj(attr,overtr,verv_neut)
================================================
FILE: lib/natural/brill_pos_tagger/data/Dutch/brill_CONTEXTRULES.json
================================================
{
"rules": [
"Pron(betr,neut,zelfst) Pron(aanw,neut,attr) PREVTAG Prep(voor)",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Adv(gew,geen_func,stell,onverv)",
"Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) NEXT1OR2TAG N(soort,ev,neut)",
"Prep(voor) Adv(deel_v) NEXT1OR2TAG STAART",
"Prep(voor) Adv(deel_v) NEXTTAG Prep(voor_inf)",
"Adj(adv,stell,onverv) Adj(attr,stell,onverv) PREV1OR2TAG Art(onbep,zijd_of_onzijd,neut)",
"Pron(betr,neut,zelfst) Pron(aanw,neut,attr) NEXTTAG N(soort,ev,neut)",
"Prep(voor) Adv(deel_v) NEXTTAG Prep(voor)",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG Adv(gew,geen_func,stell,onverv)",
"Conj(onder,met_fin) Pron(aanw,neut,attr) NEXTTAG N(soort,ev,neut)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREVTAG N(soort,mv,neut)",
"Adv(gew,er) Adv(pron,er) WDAND2TAGAFT er Prep(voor)",
"Prep(voor) Adv(deel_v) NEXTTAG Punc(komma)",
"Conj(neven) Adv(gew,geen_func,stell,onverv) PREVTAG Adv(gew,geen_func,stell,onverv)",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG V(hulp_of_kopp,ott,3,ev)",
"Pron(onbep,neut,zelfst) Pron(bez,2,ev,neut,attr) NEXTTAG N(soort,ev,neut)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXT1OR2TAG Art(bep,zijd_of_mv,neut)",
"V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) NEXTTAG V(trans,inf)",
"Pron(vrag,neut,attr) Pron(betr,neut,zelfst) PREV1OR2TAG Prep(voor)",
"V(hulp,ott,3,ev) V(hulp,ott,1,ev) NEXT1OR2OR3TAG Pron(per,1,ev,nom)",
"Pron(betr,neut,zelfst) Pron(aanw,neut,zelfst) PREVTAG Conj(neven)",
"Pron(onbep,gen,attr) Adv(gew,geen_func,stell,onverv) CURWD anders",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) PREV1OR2OR3TAG N(soort,mv,neut)",
"Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2OR3TAG Adv(gew,geen_func,vergr,onverv)",
"Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,zelfst,vergr,onverv) NEXT1OR2OR3TAG Conj(onder,met_fin)",
"Adv(gew,er) Adv(pron,er) NEXT1OR2OR3TAG Adv(deel_v)",
"Adv(deel_v) Adv(deel_adv) PREV1OR2OR3TAG Adv(pron,er)",
"Prep(voor) Adv(deel_adv) NEXTTAG Punc(punt)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXT1OR2OR3TAG Adv(gew,aanw)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,inf) NEXTTAG Punc(punt)",
"Prep(voor_inf) Adv(gew,geen_func,stell,onverv) NEXTTAG Adj(attr,stell,onverv)",
"Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) PREV1OR2OR3TAG Prep(voor)",
"V(hulp,ott,3,ev) V(hulp,ott,1,ev) PREV1OR2OR3TAG Pron(per,1,ev,nom)",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD werkelijk",
"Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2TAG Adj(adv,vergr,onverv)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,inf) NEXTTAG Punc(komma)",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) PREVTAG Conj(neven)",
"N(soort,ev,neut) Adj(attr,stell,onverv) SURROUNDTAG Art(onbep,zijd_of_onzijd,neut) N(soort,ev,neut)",
"V(trans,inf) V(trans,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG Punc(komma)",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG Prep(voor)",
"V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2TAG STAART",
"Adj(attr,stell,verv_neut) N(soort,ev,neut) NEXTTAG Prep(voor)",
"N(soort,ev,neut) V(trans,ott,1,ev) PREVTAG Pron(per,1,ev,nom)",
"Pron(per,1,ev,dat_of_acc) Pron(ref,1,ev) PREV1OR2TAG Pron(per,1,ev,nom)",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) PREVTAG V(hulp_of_kopp,ott,3,ev)",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Adv(gew,aanw)",
"Adv(gew,aanw) Conj(onder,met_fin) NEXTTAG Pron(per,3,ev,nom)",
"Conj(neven) Adv(gew,geen_func,stell,onverv) WDNEXTTAG maar Art(onbep,zijd_of_onzijd,neut)",
"Prep(voor_inf) Adv(gew,geen_func,stell,onverv) NEXT1OR2TAG Adj(adv,stell,onverv)",
"V(intrans,ovt,1_of_2_of_3,ev) V(trans,ovt,1_of_2_of_3,ev) CURWD dacht",
"V(trans,inf) V(trans,ott,1_of_2_of_3,mv) PREV1OR2TAG STAART",
"N(soort,mv,neut) V(trans,inf) PREVTAG V(hulp,ovt,1_of_2_of_3,ev)",
"Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv) NEXTTAG Punc(haak_sluit)",
"V(trans,inf) V(trans,ott,1_of_2_of_3,mv) PREV1OR2WD en",
"Pron(onbep,neut,zelfst) Pron(per,2,ev,nom) NEXT1OR2TAG Adj(adv,stell,onverv)",
"V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXT2TAG N(soort,mv,neut)",
"V(hulp,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) NEXT1OR2TAG Adv(gew,geen_func,stell,onverv)",
"Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) NEXTTAG Adj(attr,stell,verv_neut)",
"Adv(gew,er) Adv(pron,er) PREV1OR2WD ik",
"Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2OR3TAG Adj(attr,vergr,onverv)",
"Pron(onbep,neut,zelfst) Art(bep,onzijd,neut) NEXTTAG N(soort,ev,neut)",
"Adv(gew,geen_func,stell,onverv) N(soort,ev,neut) PREVTAG Art(bep,zijd_of_mv,neut)",
"V(intrans,inf) V(hulp,inf) NEXTTAG N(soort,mv,neut)",
"Pron(onbep,neut,zelfst) Pron(per,2,ev,dat_of_acc) PREVTAG Prep(voor)",
"V(intrans,teg_dw,onverv) Adv(gew,geen_func,stell,onverv) CURWD voortdurend",
"Pron(onbep,neut,zelfst) Pron(onbep,neut,attr) WDNEXTTAG ander N(soort,ev,neut)",
"N(eigen,ev,neut) N(soort,ev,neut) NEXTWD aan",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) NEXTTAG Adj(attr,stell,onverv)",
"Adj(attr,stell,onverv) N(soort,ev,neut) PREV1OR2TAG Art(bep,onzijd,neut)",
"Adj(adv,stell,onverv) Adj(attr,stell,onverv) CURWD hard",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD ruim",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Pron(aanw,neut,attr)",
"N(soort,mv,neut) V(intrans,inf) PREVTAG V(hulp,inf)",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT1OR2OR3TAG Punc(punt)",
"V(hulp,ott,3,ev) V(trans,ott,3,ev) RBIGRAM heeft een",
"Prep(voor) N(eigen,ev,neut) WDNEXTTAG Van N(eigen,ev,neut)",
"V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) PREV1OR2TAG V(hulp,ovt,1_of_2_of_3,ev)",
"Conj(neven) Adv(gew,geen_func,stell,onverv) PREV1OR2OR3TAG Pron(per,2,ev,nom)",
"V(hulp,ovt,1_of_2_of_3,ev) V(trans,ovt,1_of_2_of_3,ev) NEXT1OR2OR3TAG Conj(onder,met_fin)",
"Pron(vrag,neut,attr) Pron(betr,neut,zelfst) PREVTAG Pron(onbep,neut,zelfst)",
"Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,zelfst,vergr,onverv) PREV1OR2OR3TAG Conj(neven)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,inf) PREV1OR2TAG Prep(voor_inf)",
"Pron(bez,1,mv,neut,attr) Pron(per,1,mv,dat_of_acc) PREV1OR2OR3TAG Punc(komma)",
"Pron(betr,neut,zelfst) Pron(aanw,neut,attr) NEXTTAG Adj(attr,stell,verv_neut)",
"Pron(vrag,neut,attr) Pron(onbep,neut,attr) PREVTAG Adv(gew,geen_func,stell,onverv)",
"Pron(onbep,neut,attr) Pron(onbep,neut,zelfst) NEXTWD van",
"V(intrans,verl_dw,onverv) V(trans,verl_dw,onverv) PREV1OR2OR3TAG N(soort,ev,neut)",
"Pron(aanw,neut,zelfst) Pron(betr,neut,zelfst) PREVTAG N(soort,ev,neut)",
"V(hulp,imp) V(hulp,ott,3,ev) CURWD laat",
"Adj(attr,stell,onverv) Adv(gew,geen_func,stell,onverv) CURWD opeens",
"Adj(adv,stell,onverv) Adj(attr,stell,onverv) NEXTTAG V(hulp_of_kopp,ott,3,ev)",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD haastig",
"Adj(adv,stell,onverv) Adj(attr,stell,onverv) SURROUNDTAG Adv(gew,geen_func,stell,onverv) Punc(punt)",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXTTAG V(hulp_of_kopp,ott,3,ev)",
"N(soort,ev,neut) Adj(adv,stell,onverv) PREVTAG Adv(gew,aanw)",
"N(soort,mv,neut) V(trans,inf) PREVWD moeten",
"Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv) NEXTTAG V(hulp_of_kopp,ovt,1_of_2_of_3,ev)",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT2TAG Pron(per,1,ev,nom)",
"N(soort,ev,neut) N(eigen,ev,neut) CURWD februari",
"V(hulp,ott,3,ev) V(trans,ott,3,ev) NEXTTAG Punc(komma)",
"V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTTAG Adv(gew,geen_func,stell,onverv)",
"V(hulp,ott,3,ev) V(trans,ott,3,ev) WDNEXTTAG heeft Prep(voor)",
"Pron(onbep,neut,zelfst) Pron(per,2,ev,nom) PREV1OR2OR3TAG Punc(aanhaal_dubb)",
"V(trans,ott,3,ev) V(trans,ott,2,ev) PREV1OR2OR3TAG Pron(per,2,ev,nom)",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) PREV1OR2OR3TAG Pron(per,2,ev,nom)",
"Prep(voor) Adv(deel_v) NEXTTAG Conj(onder,met_fin)",
"N(soort,mv,neut) V(trans,verl_dw,onverv) CURWD verloren",
"Adj(attr,stell,onverv) N(soort,ev,neut) WDAND2TAGBFR Prep(voor) dood",
"Pron(aanw,neut,attr) Pron(aanw,neut,zelfst) NEXTTAG Prep(voor)",
"Prep(voor) N(eigen,ev,neut) SURROUNDTAG N(eigen,ev,neut) N(eigen,ev,neut)",
"Adv(gew,aanw) Adv(pron,aanw) NEXT1OR2TAG Pron(per,1,ev,nom)",
"Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXTTAG Adv(gew,geen_func,stell,onverv)",
"N(soort,ev,neut) V(trans,ovt,1_of_2_of_3,ev) PREVTAG Pron(per,3,ev,nom)",
"V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) PREV1OR2TAG Prep(voor)",
"Adv(gew,er) Adv(pron,er) PREV2TAG Conj(onder,met_fin)",
"Prep(voor) Adv(deel_adv) PREV1OR2OR3TAG Adv(pron,er)",
"Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXT1OR2TAG Art(onbep,zijd_of_onzijd,neut)",
"Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv) NEXTTAG N(soort,ev,neut)",
"Adv(gew,aanw) Conj(onder,met_fin) PREV1OR2TAG Adj(attr,stell,onverv)",
"V(hulp,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) PREV1OR2TAG Pron(bez,3,mv,neut,attr)",
"Conj(neven) Adv(gew,geen_func,stell,onverv) PREV1OR2WD ik",
"Conj(neven) Conj(onder,met_fin) PREV1OR2WD net",
"Pron(vrag,neut,attr) Pron(betr,neut,zelfst) NEXTTAG N(eigen,ev,neut)",
"Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv) NEXT1OR2OR3TAG Num(hoofd,bep,zelfst,onverv)",
"Art(bep,onzijd,neut) Pron(per,3,ev,nom) NEXTTAG Art(onbep,zijd_of_onzijd,neut)",
"V(intrans,ovt,1_of_2_of_3,ev) V(hulp,ovt,1_of_2_of_3,ev) CURWD begon",
"Adv(gew,geen_func,stell,onverv) N(soort,ev,neut) PREV1OR2WD op",
"N(soort,ev,neut) Num(hoofd,bep,attr,onverv) CURWD 7",
"Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,zelfst,vergr,onverv) PREV1OR2TAG Prep(voor)",
"V(trans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG STAART",
"V(intrans,ott,1_of_2_of_3,mv) V(intrans,inf) NEXT1OR2OR3TAG Conj(neven)",
"V(intrans,inf) V(hulp,inf) NEXTTAG V(trans,inf)",
"Adv(gew,geen_func,stell,onverv) Conj(onder,met_fin) PREVTAG Punc(komma)",
"Adv(gew,geen_func,stell,onverv) Adj(attr,stell,onverv) CURWD tevreden",
"V(trans,ott,1_of_2_of_3,mv) V(intrans,inf) CURWD beginnen",
"V(trans,ott,1,ev) V(trans,ott,2,ev) NEXTTAG Pron(per,2,ev,nom)",
"V(intrans,teg_dw,verv_neut) N(soort,ev,neut) CURWD schande",
"V(intrans,ott,3,ev) N(soort,ev,neut) NEXT1OR2OR3TAG Prep(voor_inf)",
"N(soort,ev,neut) Adj(attr,vergr,onverv) PREVWD steeds",
"N(soort,ev,neut) V(intrans,ott,3,ev) WDNEXTTAG sterft Prep(voor)",
"N(eigen,ev,neut) Adj(attr,stell,verv_neut) SURROUNDTAG STAART N(soort,mv,neut)",
"V(trans,ovt,1_of_2_of_3,ev) Adj(attr,stell,verv_neut) PREV1OR2TAG Prep(voor)",
"V(intrans,inf) V(hulp,inf) NEXTTAG V(intrans,inf)",
"V(hulp,inf) V(trans,inf) NEXTTAG Punc(punt)",
"V(refl,ott,3,ev) V(trans,ott,3,ev) CURWD voelt",
"Pron(bez,3,ev,neut,attr) V(intrans,ott,1_of_2_of_3,mv) PREVTAG Adv(gew,er)",
"V(hulp,ott,2,ev) V(hulp,ott,3,ev) CURWD hoeft",
"Pron(onbep,neut,zelfst) Pron(ref,2,ev) PREV1OR2WD je",
"V(intrans,teg_dw,verv_neut) Pron(onbep,neut,attr) WDNEXTTAG verschillende N(soort,mv,neut)",
"Adv(gew,vrag) Adj(attr,stell,onverv) PREV1OR2OR3TAG V(hulp_of_kopp,ott,3,ev)",
"Adj(attr,vergr,verv_neut) Adj(attr,stell,verv_neut) CURWD nare",
"V(trans,ott,1,ev) Int CURWD hoor",
"V(intrans,ovt,1_of_2_of_3,mv) V(intrans,verl_dw,onverv) CURWD verdwenen",
"Adv(pron,vrag) Adv(pron,betr) CURWD waardoor",
"N(eigen,ev,neut) N(soort,ev,neut) PREVTAG Art(onbep,zijd_of_onzijd,neut)",
"N(eigen,ev,neut) N(soort,ev,neut) NEXT1OR2WD worden",
"N(eigen,ev,neut) N(soort,ev,neut) NEXTBIGRAM Conj(neven) N(soort,ev,neut)",
"N(eigen,ev,neut) N(soort,ev,neut) SURROUNDTAG STAART Prep(voor)",
"N(eigen,ev,neut) N(soort,ev,neut) CURWD Koningin",
"Adj(adv,stell,onverv) Adj(attr,stell,onverv) PREV1OR2TAG V(hulp_of_kopp,ott,1_of_2_of_3,mv)",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) PREVTAG STAART",
"Adj(adv,stell,onverv) Adj(attr,stell,onverv) WDPREVTAG N(soort,mv,neut) nodig",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) NEXTTAG Prep(voor_inf)",
"Adj(adv,stell,onverv) Adj(attr,stell,onverv) CURWD eenzaam",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD regelmatig",
"Adj(attr,stell,onverv) Adj(adv,stell,onverv) CURWD geestelijk",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) PREVTAG Pron(per,2,ev,nom)",
"V(trans,inf) V(intrans,inf) NEXT1OR2TAG N(eigen,ev,neut)",
"V(intrans,ovt,1_of_2_of_3,ev) V(hulp,ovt,1_of_2_of_3,ev) NEXT1OR2TAG V(intrans,inf)",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXTTAG Punc(komma)",
"V(trans,inf) V(intrans,inf) PREV1OR2OR3TAG Adj(adv,vergr,onverv)",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Pron(onbep,neut,zelfst)",
"V(trans,inf) V(intrans,inf) CURWD wennen",
"Art(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG Conj(onder,met_inf)",
"N(soort,ev,neut) V(trans,verl_dw,onverv) PREV1OR2TAG V(hulp_of_kopp,ovt,1_of_2_of_3,mv)",
"N(soort,ev,neut) Adj(adv,stell,onverv) NEXTTAG V(trans,verl_dw,verv_neut)",
"Prep(voor) Adv(deel_adv) NEXTTAG V(trans,inf)",
"N(soort,ev,neut) Adj(adv,stell,onverv) NEXTBIGRAM Adj(attr,stell,onverv) N(soort,ev,neut)",
"N(soort,mv,neut) V(trans,inf) PREV1OR2TAG Pron(per,3,ev,dat_of_acc)",
"Prep(voor) Adv(deel_adv) NEXTBIGRAM V(intrans,ott,3,ev) Punc(punt)",
"V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2TAG Conj(neven)",
"N(soort,mv,neut) V(trans,inf) PREV1OR2OR3TAG V(hulp,ott,2,ev)",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXTTAG V(intrans,ott,3,ev)",
"V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG Punc(komma)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREVTAG Pron(per,1,mv,nom)",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT1OR2TAG V(trans,ott,3,ev)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTTAG Prep(voor)",
"Conj(onder,met_inf) Prep(voor) NEXTTAG N(soort,mv,neut)",
"V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREVTAG V(trans,verl_dw,onverv)",
"V(hulp,ott,3,ev) V(trans,ott,3,ev) WDPREVTAG Pron(per,3,ev,nom) heeft",
"Conj(onder,met_fin) Pron(aanw,neut,zelfst) NEXT1OR2WD doen",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTTAG V(trans,verl_dw,onverv)",
"V(hulp_of_kopp,ott,1_of_2_of_3,mv) V(hulp_of_kopp,inf) PREV1OR2TAG V(hulp,ott,3,ev)",
"N(soort,ev,neut) Adj(attr,stell,verv_neut) PREVBIGRAM Adj(attr,stell,verv_neut) Punc(komma)",
"N(soort,mv,neut) V(trans,verl_dw,onverv) CURWD ingenomen",
"Conj(onder,met_inf) Prep(voor) NEXTTAG N(soort,ev,neut)",
"V(trans,ovt,1_of_2_of_3,ev) V(intrans,ovt,1_of_2_of_3,ev) PREVTAG N(eigen,ev,neut)",
"Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv) NEXTWD het",
"Pron(aanw,neut,attr) Pron(aanw,neut,zelfst) NEXTTAG V(hulp_of_kopp,ott,3,ev)",
"Adv(gew,aanw) Adv(pron,aanw) PREVTAG Punc(punt_komma)",
"Adv(deel_v) Adv(deel_adv) RBIGRAM bij ,",
"V(intrans,inf) V(trans,inf) CURWD schrijven",
"Pron(onbep,neut,zelfst) Pron(per,2,ev,nom) PREV1OR2OR3TAG N(eigen,ev,neut)",
"Prep(voor) Adv(deel_v) NEXTTAG V(hulp,inf)",
"N(soort,mv,neut) V(trans,verl_dw,onverv) CURWD betrokken",
"V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREV1OR2WD en",
"Pron(aanw,neut,zelfst) Conj(onder,met_fin) WDAND2TAGAFT Dat N(soort,ev,neut)",
"Adv(deel_v) Adv(deel_adv) PREV1OR2OR3TAG Adv(gew,er)",
"Adv(gew,er) Adv(pron,er) NEXT1OR2OR3TAG Adv(deel_adv)",
"N(soort,ev,neut) N(soort,mv,neut) WDNEXTTAG dll Num(hoofd,bep,attr,onverv)",
"N(eigen,ev,neut) N(eigen,mv,neut) NEXTWD Staten",
"Adj(attr,stell,verv_neut) N(soort,ev,neut) NEXTTAG Punc(punt)",
"V(hulp_of_kopp,inf) V(hulp_of_kopp,ott,1_of_2_of_3,mv) PREV1OR2OR3TAG Adj(attr,stell,verv_neut)",
"V(hulp,ovt,1_of_2_of_3,ev) V(trans,ovt,1_of_2_of_3,ev) SURROUNDTAG N(soort,ev,neut) Punc(komma)",
"Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXTTAG Prep(voor)",
"Prep(voor) N(eigen,ev,neut) NEXTTAG Art(bep,zijd_of_mv,gen)",
"Art(bep,zijd_of_mv,neut) N(eigen,ev,neut) WDNEXTTAG De N(eigen,ev,neut)",
"Adj(attr,stell,verv_neut) Adj(zelfst,stell,verv_neut) PREVWD Het",
"N(eigen,ev,neut) V(trans,imp) SURROUNDTAG STAART Adv(gew,aanw)",
"N(eigen,ev,neut) N(eigen,mv,neut) PREVTAG N(eigen,mv,neut)",
"Adv(gew,aanw) Conj(onder,met_fin) LBIGRAM , toen",
"V(hulp,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) RBIGRAM hebben ,",
"V(trans,ott,1_of_2_of_3,mv) V(hulp,ott,1_of_2_of_3,mv) PREV1OR2TAG STAART",
"V(hulp,inf) V(hulp,ott,1_of_2_of_3,mv) NEXTTAG Pron(per,1,mv,nom)",
"Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) NEXTTAG V(trans,verl_dw,onverv)",
"Pron(aanw,neut,attr) Pron(betr,neut,zelfst) WDPREVTAG N(soort,mv,neut) die",
"V(hulp,ott,3,ev) V(hulp,ott,2,ev) PREVTAG Pron(per,2,ev,nom)",
"Pron(bez,1,mv,neut,attr) Pron(per,1,mv,dat_of_acc) NEXTTAG Punc(punt)",
"N(eigen,ev,neut) Prep(voor) SURROUNDTAG STAART Art(bep,zijd_of_mv,neut)",
"Conj(neven) Adv(gew,geen_func,stell,onverv) PREVTAG Adv(gew,aanw)",
"Pron(betr,neut,zelfst) Pron(aanw,neut,zelfst) PREV1OR2TAG Conj(onder,met_fin)",
"Pron(aanw,neut,zelfst) Pron(aanw,neut,attr) NEXTBIGRAM Adj(attr,stell,verv_neut) N(soort,ev,neut)",
"Prep(voor_inf) Adv(gew,geen_func,stell,onverv) NEXTTAG Adj(attr,stell,verv_neut)",
"Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv) PREV1OR2OR3TAG Num(hoofd,bep,attr,onverv)",
"N(soort,ev,neut) V(intrans,inf) PREVTAG Prep(voor_inf)",
"Prep(voor_inf) Prep(voor) NEXTTAG N(soort,ev,neut)",
"Adj(adv,stell,onverv) N(soort,ev,neut) WDAND2AFT geheel .",
"V(trans,ott,3,ev) N(soort,ev,neut) PREVTAG Art(onbep,zijd_of_onzijd,neut)",
"V(trans,inf) V(trans,inf,subst) PREV1OR2TAG Art(bep,onzijd,neut)",
"V(hulp,ott,3,ev) V(hulp,ott,2,ev) NEXTWD u",
"Adv(gew,geen_func,stell,onverv) N(soort,ev,neut) PREVTAG Adj(attr,stell,verv_neut)",
"Adv(deel_v) Prep(voor) WDNEXTTAG tot Prep(voor)",
"V(hulp,ovt,1_of_2_of_3,mv) V(trans,ovt,1_of_2_of_3,mv) CURWD hadden",
"Adv(gew,geen_func,stell,onverv) Pron(onbep,neut,attr) NEXTWD die",
"V(trans,inf) V(refl,inf) PREV1OR2OR3TAG Pron(ref,3,ev_of_mv)",
"V(hulp,inf) V(hulp,ott,1_of_2_of_3,mv) WDNEXTTAG moeten V(trans,inf)",
"V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) NEXTBIGRAM V(trans,inf) Punc(komma)",
"Pron(aanw,neut,zelfst) Pron(betr,neut,zelfst) SURROUNDTAG Punc(komma) Prep(voor)",
"N(eigen,ev,neut) Int SURROUNDTAG Punc(aanhaal_dubb) Punc(komma)",
"N(eigen,ev,neut) Art(bep,zijd_of_mv,neut) LBIGRAM STAART De",
"Conj(onder,met_fin) Conj(neven) PREV1OR2WD zowel",
"Adv(gew,geen_func,stell,onverv) Adj(attr,stell,onverv) NEXTTAG Conj(neven)",
"Adj(attr,stell,verv_neut) Pron(onbep,neut,attr) WDNEXTTAG Elke N(soort,ev,neut)",
"Adj(adv,vergr,onverv) Adj(attr,vergr,onverv) PREV1OR2TAG Adv(gew,geen_func,stell,onverv)",
"V(trans,ovt,1_of_2_of_3,ev) N(soort,ev,neut) PREVTAG Adj(attr,stell,verv_neut)",
"V(intrans,teg_dw,verv_neut) N(soort,ev,neut) CURWD bende",
"V(hulp,inf) V(hulp,ott,1_of_2_of_3,mv) WDPREVTAG N(soort,ev,neut) kunnen",
"Pron(vrag,neut,attr) Pron(onbep,neut,attr) NEXTTAG N(soort,mv,neut)",
"Pron(betr,neut,zelfst) Pron(vrag,neut,attr) NEXT1OR2OR3TAG Adv(gew,aanw)",
"Adv(gew,vrag) Adv(pron,vrag) PREVTAG Pron(onbep,neut,zelfst)",
"Adv(gew,geen_func,vergr,onverv) Num(hoofd,onbep,attr,vergr,onverv) NEXT1OR2TAG N(soort,mv,neut)",
"V(trans,ott,1,ev) V(trans,ott,3,ev) PREVTAG Pron(onbep,neut,zelfst)",
"V(hulp_of_kopp,ovt,1_of_2_of_3,mv) V(intrans,ovt,1_of_2_of_3,mv) NEXTTAG Adv(gew,er)",
"Pron(onbep,neut,zelfst) Pron(per,2,ev,dat_of_acc) PREV1OR2TAG Pron(per,1,ev,nom)",
"Num(hoofd,bep,attr,onverv) Num(rang,bep,attr,onverv) PREVTAG Art(bep,onzijd,neut)",
"N(soort,ev,neut) Int CURWD oh",
"V(intrans,ott,1,ev) N(soort,ev,neut) NEXT1OR2OR3TAG Prep(voor)",
"Pron(aanw,neut,zelfst) Pron(betr,neut,zelfst) SURROUNDTAG Punc(komma) Adv(gew,geen_func,stell,onverv)",
"Adj(zelfst,stell,verv_mv) N(soort,mv,neut) CURWD armen",
"V(trans,ott,1,ev) V(intrans,ovt,1_of_2_of_3,ev) NEXT1OR2WD in",
"V(intrans,inf) N(soort,mv,neut) WDNEXTTAG verschillen Prep(voor)",
"Prep(voor) V(trans,imp) NEXTTAG Pron(aanw,neut,attr)",
"N(eigen,ev,neut) Art(bep,zijd_of_mv,neut) WDNEXTTAG DE N(eigen,ev,neut)",
"Adv(gew,aanw) Conj(onder,met_fin) WDAND2TAGBFR Art(bep,zijd_of_mv,neut) toen",
"V(trans,ovt,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) NEXTTAG Pron(per,3,ev_of_mv,nom)",
"V(trans,ovt,1_of_2_of_3,ev) Conj(onder,met_fin) CURWD zodra",
"V(intrans,verl_dw,verv_neut) V(intrans,ovt,1_of_2_of_3,ev) CURWD gebeurde",
"V(intrans,teg_dw,onverv) Adv(gew,geen_func,stell,onverv) CURWD dringend",
"V(hulp,ovt,1_of_2_of_3,ev) Adj(attr,stell,verv_neut) PREV1OR2TAG Prep(voor)",
"V(intrans,ott,3,ev) N(soort,ev,neut) PREVTAG Adj(attr,stell,verv_neut)",
"V(hulp,inf) Num(hoofd,bep,attr,onverv) CURWD veertien",
"Prep(voor) N(soort,mv,neut) NEXTWD zijn",
"Num(hoofd,onbep,zelfst,stell,onverv) Num(hoofd,onbep,attr,stell,onverv) NEXTTAG N(soort,mv,neut)",
"Art(bep,zijd_of_mv,gen) N(eigen,ev,neut) PREVTAG N(eigen,ev,neut)",
"N(eigen,ev,neut) N(soort,ev,neut) PREVTAG Adj(attr,overtr,verv_neut)"
]
}
================================================
FILE: lib/natural/brill_pos_tagger/data/Dutch/brill_LEXICON.jg
================================================
nijptangen N(soort,mv,neut)
afhankelijk Adj(attr,stell,onverv)
Over Prep(voor)
partisanenster N(soort,ev,neut)
overtuigd V(trans,verl_dw,onverv)
bruine Adj(attr,stell,verv_neut)
imitatie N(soort,ev,neut)
kreeg V(trans,ovt,1_of_2_of_3,ev)
ongenoegen N(soort,ev,neut)
Heel Adv(gew,geen_func,stell,onverv)
precies Adj(adv,stell,onverv) Adj(attr,stell,onverv)
rede N(soort,ev,neut)
Zijn Pron(bez,3,ev,neut,attr) V(hulp_of_kopp,ott,1_of_2_of_3,mv)
toegetakeld V(trans,verl_dw,onverv)
bestaande V(intrans,teg_dw,verv_neut)
repertoire N(soort,ev,neut)
Heer N(soort,ev,neut)
opslag N(soort,ev,neut)
overtuigt V(trans,ott,3,ev)
radio N(soort,ev,neut)
kreet N(soort,ev,neut)
Begint V(hulp,ott,2,ev)
plaatse N(soort,ev,dat)
! Punc(uitroep) N(soort,mv,neut)
Lutherse Adj(attr,stell,verv_neut)
buigzaamheid N(soort,ev,neut)
" Punc(aanhaal_dubb)
% N(soort,ev,neut)
Tegelse Adj(attr,stell,verv_neut)
& N(eigen,ev,neut)
binden V(trans,inf)
cel N(soort,ev,neut)
( Punc(haak_open)
vakantiebesteding N(soort,ev,neut)
) Punc(haak_sluit)
gieren V(intrans,ott,1_of_2_of_3,mv)
specialist N(soort,ev,neut)
Woody N(eigen,ev,neut)
, Punc(komma) N(eigen,ev,neut)
gestreefd V(intrans,verl_dw,onverv)
- Punc(ligg_streep)
. Punc(punt)
DSRV's N(soort,mv,neut)
/ Punc(schuin_streep)
reed V(intrans,ovt,1_of_2_of_3,ev)
1 Num(hoofd,bep,attr,onverv) N(eigen,ev,neut) N(soort,ev,neut) Num(hoofd,bep,zelfst,onverv)
uitgescholden V(trans,verl_dw,onverv)
2 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
3 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
4 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
5 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
Sibyl N(eigen,ev,neut)
6 Num(hoofd,bep,attr,onverv)
bestemming N(soort,ev,neut)
boekje N(soort,ev,neut) N(eigen,ev,neut)
7 Num(hoofd,bep,attr,onverv)
8 Num(hoofd,bep,attr,onverv)
tevoren Adv(gew,geen_func,stell,onverv)
9 Num(hoofd,bep,attr,onverv)
toegelaten V(trans,verl_dw,onverv)
: Punc(dubb_punt)
; Punc(punt_komma)
koper- N(soort,ev,neut)
rapporten N(soort,mv,neut)
aandoenlijkheid N(soort,ev,neut)
? Punc(vraag)
rees V(intrans,ovt,1_of_2_of_3,ev)
rijbevoegdheid N(soort,ev,neut)
aanslag N(soort,ev,neut)
@ Misc(symbool)
hoeverre Adv(gew,betr)
Porsche N(eigen,ev,neut)
B Num(hoofd,bep,attr,onverv)
FRANSE Adj(attr,stell,verv_neut)
C Num(hoofd,bep,attr,onverv)
knotwilgen N(soort,mv,neut)
G N(eigen,ev,neut)
aanvoer N(soort,ev,neut)
I Misc(vreemd)
Gewoon Adj(adv,stell,onverv)
gestegen V(intrans,verl_dw,onverv)
overgeleverd V(trans,verl_dw,onverv)
gram N(soort,ev,neut)
aangeven V(trans,inf)
L N(soort,ev,neut)
opbelde V(intrans,ovt,1_of_2_of_3,ev) V(trans,ovt,1_of_2_of_3,ev)
verplichte V(trans,verl_dw,verv_neut)
O Int
grap N(soort,ev,neut)
Q N(soort,ev,neut)
Weitz N(eigen,ev,neut)
gras N(soort,ev,neut)
R N(soort,ev,neut)
verschijning N(soort,ev,neut)
S N(eigen,ev,neut) N(soort,ev,neut)
reactie N(soort,ev,neut)
U Pron(per,2,ev,nom)
geexperimenteerd V(trans,verl_dw,onverv)
comfortabel Adj(adv,stell,onverv) Adj(attr,stell,onverv)
spijsverteren V(intrans,inf)
genoten V(trans,verl_dw,onverv) V(trans,ovt,1_of_2_of_3,mv)
XIII-stijl N(soort,ev,neut)
koffertje N(soort,ev,neut)
proberen V(hulp,inf) V(trans,inf) V(hulp,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv)
reebout N(soort,ev,neut)
dichtslibben V(intrans,inf,subst)
lossen V(trans,inf)
a Prep(voor) Misc(vreemd)
d Num(hoofd,bep,zelfst,onverv)
Paramaribo N(eigen,ev,neut)
losser Adj(attr,vergr,onverv)
Gibb N(eigen,ev,neut)
deugdelijke Adj(attr,stell,verv_neut)
g N(soort,ev,neut)
i N(eigen,ev,neut)
GAP N(eigen,ev,neut)
bergland N(soort,ev,neut)
doorkreeg V(trans,ovt,1_of_2_of_3,ev)
n N(soort,ev,neut)
Eltman N(eigen,ev,neut)
keken V(trans,ovt,1_of_2_of_3,mv) V(intrans,ovt,1_of_2_of_3,mv)
Frankrijk N(eigen,ev,neut)
u Pron(per,2,ev,nom)
x Punc(maal)
bouwen V(trans,inf)
Beschadigd V(trans,verl_dw,onverv)
fietsers N(soort,mv,neut)
voorbaat N(soort,ev,neut)
sales-manager N(soort,ev,neut)
prefereer V(trans,ott,1,ev)
kruispunten N(soort,mv,neut)
accu's N(soort,mv,neut)
familieleven N(soort,ev,neut)
politie N(soort,ev,neut)
gemengde V(trans,verl_dw,verv_neut)
woonruimte N(soort,ev,neut)
waterpokken N(soort,mv,neut)
gegeven V(trans,verl_dw,onverv) N(soort,ev,neut)
maanlandschap N(soort,ev,neut)
openbare Adj(attr,stell,verv_neut)
Maitena N(eigen,ev,neut)
bloederziekte N(soort,ev,neut)
ministerssteek N(soort,ev,neut)
invloed N(soort,ev,neut)
jullie Pron(per,2,mv,dat_of_acc) Pron(per,2,mv,nom)
Bogarde N(eigen,ev,neut)
ploegdiscipline N(soort,ev,neut)
verwarming N(soort,ev,neut)
instemming N(soort,ev,neut)
Poema-schoenen N(soort,mv,neut)
baby's N(soort,mv,neut)
vastbeslotenheid N(soort,ev,neut)
span V(trans,imp)
liefdes N(soort,mv,neut)
uitgewerkt V(trans,verl_dw,onverv)
conferentie N(soort,ev,neut)
concrete Adj(attr,stell,verv_neut)
naderende V(intrans,teg_dw,verv_neut)
ruitje N(soort,ev,neut)
verjaardag N(soort,ev,neut)
reis N(soort,ev,neut)
ober N(soort,ev,neut)
geboycot V(trans,verl_dw,onverv)
Eerst Adj(adv,vergr,onverv) Adv(gew,geen_func,stell,onverv)
rakker N(soort,ev,neut)
Kuyper N(eigen,ev,neut)
onherkenbaar Adj(attr,stell,onverv)
luisteraar N(soort,ev,neut)
bewerkstelligen V(trans,inf)
wolf N(soort,ev,neut)
samenhang N(soort,ev,neut)
taxilichten N(soort,mv,neut)
betreden V(trans,verl_dw,onverv) V(trans,ott,1_of_2_of_3,mv)
wolk N(soort,ev,neut)
gezicht N(soort,ev,neut)
deden V(trans,ovt,1_of_2_of_3,mv) V(intrans,ovt,1_of_2_of_3,mv) V(hulp,ovt,1_of_2_of_3,mv)
uitsterven V(intrans,inf,subst)
ontkomen V(intrans,inf)
Krekelberg N(eigen,ev,neut)
royaal Adj(attr,stell,onverv)
Giet V(trans,imp)
trachtend V(hulp_of_kopp,teg_dw,onverv)
tekende V(trans,ovt,1_of_2_of_3,ev)
Onoordeelkundig Adj(adv,stell,onverv)
Mond N(soort,ev,neut)
Bewoont V(trans,ott,3,ev)
mededeling N(soort,ev,neut)
benoemde V(trans,ovt,1_of_2_of_3,ev) V(refl,ovt,1_of_2_of_3,ev)
bouwstijlen N(soort,mv,neut)
verbaasd V(trans,verl_dw,onverv)
staarden V(intrans,ovt,1_of_2_of_3,mv) V(trans,ovt,1_of_2_of_3,mv)
mevrouw N(soort,ev,neut)
leesbaar Adj(attr,stell,onverv)
zoute Adj(attr,stell,verv_neut)
verweven V(trans,verl_dw,onverv)
Althans Adv(gew,geen_func,stell,onverv)
Twiggy N(eigen,ev,neut)
beatband N(soort,ev,neut)
kosteloze Adj(attr,stell,verv_neut)
stelling N(soort,ev,neut)
kersen N(soort,mv,neut)
onderwijzer N(soort,ev,neut)
Daarin Adv(pron,aanw)
tenen N(soort,mv,neut)
dankbaar Adj(attr,stell,onverv)
tekenen V(intrans,inf)
Libelle-bruidspaar N(soort,ev,neut)
niet-materiele Adj(attr,stell,verv_neut)
mantel N(soort,ev,neut)
sfeer N(soort,ev,neut)
Mooi Adj(attr,stell,onverv)
wond V(refl,ovt,1_of_2_of_3,ev)
doch Conj(neven)
Bergers N(eigen,ev,neut)
Street N(eigen,ev,neut)
overlas V(trans,ovt,1_of_2_of_3,ev)
ontberingssituaties N(soort,mv,neut)
slingert V(refl,ott,3,ev)
gietharsversiering N(soort,ev,neut)
dergelijke Pron(aanw,dat,attr)
genoodzaakt V(trans,verl_dw,onverv)
ervaring N(soort,ev,neut)
Pieterse N(eigen,ev,neut)
koolbladeren N(soort,mv,neut)
waarschijnlijk Adj(adv,stell,onverv) Adj(attr,stell,onverv)
juli N(eigen,ev,neut)
naliet V(trans,ovt,1_of_2_of_3,ev)
geeft V(trans,ott,3,ev)
dode Adj(attr,stell,verv_neut)
stichten V(trans,inf)
medewerker N(soort,ev,neut)
dergelijks Pron(aanw,gen,attr)
ziekenfondspakket N(soort,ev,neut)
spek N(soort,ev,neut)
romantiek N(soort,ev,neut)
spel N(soort,ev,neut)
kreng N(soort,ev,neut)
chirurgie N(soort,ev,neut)
vermoedt V(trans,ott,3,ev)
Henk N(eigen,ev,neut)
minstens Adv(gew,geen_func,stell,onverv)
woon V(intrans,ott,1,ev)
logische Adj(attr,stell,verv_neut)
gebied N(soort,ev,neut)
ongerief N(soort,ev,neut)
uittorenend Adj(attr,stell,onverv)
maagdelijke Adj(attr,stell,verv_neut)
overtocht N(soort,ev,neut)
makkelijker Adj(adv,vergr,onverv)
uitdrukking N(soort,ev,neut)
snoepen V(intrans,inf)
grif Adj(adv,stell,onverv)
klaargezet V(trans,verl_dw,onverv)
ruimschoots Adj(adv,stell,onverv)
Opnieuw Adv(gew,geen_func,stell,onverv)
beweegt V(intrans,ott,3,ev)
tactische Adj(attr,stell,verv_neut)
VPRO-programma N(soort,ev,neut)
doek N(soort,ev,neut)
doel N(soort,ev,neut)
voort Adv(deel_v) Adv(gew,geen_func,stell,onverv)
doen V(trans,inf) V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) V(trans,ott,1_of_2_of_3,mv) V(hulp,ott,1_of_2_of_3,mv) V(hulp,inf) N(soort,ev,neut)
boezem N(soort,ev,neut)
torenflats N(soort,mv,neut)
bevrediging N(soort,ev,neut)
5,95 Num(hoofd,bep,attr,onverv)
kralenversiering N(soort,ev,neut)
does Misc(vreemd)
doet V(trans,ott,3,ev) V(hulp,ott,3,ev) V(intrans,ott,3,ev) V(trans,ott,2,ev) V(refl,ott,3,ev)
naargeestig Adj(adv,stell,onverv)
zesjarige Adj(attr,stell,verv_neut)
beslagen V(trans,verl_dw,onverv)
misdaadfilm N(soort,ev,neut)
omstreeks Adv(gew,geen_func,stell,onverv) Prep(voor)
coc N(eigen,ev,neut)
ras N(soort,ev,neut)
fondue N(soort,ev,neut)
popgroep N(soort,ev,neut)
juni N(eigen,ev,neut)
driekwartsmaat N(soort,ev,neut)
verkoopster N(soort,ev,neut)
besteden V(trans,inf)
samenloop N(soort,ev,neut)
bijeen Adv(gew,geen_func,stell,onverv)
Woont V(intrans,ott,3,ev)
tweeenvijftigjarige Adj(attr,stell,verv_neut)
Tenzij Conj(onder,met_fin)
trachtten V(hulp,ovt,1_of_2_of_3,mv)
afdeling N(soort,ev,neut)
vervolmaken V(trans,inf)
Claude N(eigen,ev,neut)
breiden V(trans,inf)
verwekken V(trans,inf,subst) V(trans,inf)
herinner V(trans,ott,1,ev)
tvshow N(soort,ev,neut)
Balenciaga N(eigen,ev,neut)
hieraan Adv(pron,aanw)
maakte V(trans,ovt,1_of_2_of_3,ev) V(refl,ovt,1_of_2_of_3,ev)
intrinsieke Adj(attr,stell,verv_neut)
saus N(soort,ev,neut)
meerderheid N(soort,ev,neut)
kunstkenners N(soort,mv,neut)
word V(hulp_of_kopp,ott,1,ev)
vergeetachtige Adj(attr,stell,verv_neut)
Daarna Adv(pron,aanw)
binnenkomen V(intrans,ott,1_of_2_of_3,mv)
eenling N(soort,ev,neut)
Grieks Adj(zelfst,stell,onverv)
ellendig Adj(attr,stell,onverv)
moest-ie V(hulp_of_kopp,ovt,1_of_2_of_3,ev)
nerveus Adj(attr,stell,onverv) Adj(adv,stell,onverv)
krottenwijken N(soort,mv,neut)
dieper Adj(adv,vergr,onverv)
opgebeld V(trans,verl_dw,onverv)
billen N(soort,mv,neut)
richt V(refl,ott,3,ev)
merken V(trans,inf) N(soort,mv,neut) V(trans,ott,1_of_2_of_3,mv)
bevalling N(soort,ev,neut)
overstroomd V(trans,verl_dw,onverv)
afvalstoffen N(soort,mv,neut)
Trap N(soort,ev,neut)
afweging N(soort,ev,neut)
voedseloverschotten N(soort,mv,neut)
beschrijving N(soort,ev,neut)
kwaad Adj(attr,stell,onverv) N(soort,ev,neut)
Herr N(eigen,ev,neut)
Barry N(eigen,ev,neut)
NAAM N(soort,ev,neut)
kwaal N(soort,ev,neut)
Daarom Adv(gew,aanw)
diepvriesvak N(soort,ev,neut)
Middeleeuwen N(eigen,mv,neut)
overtuigen V(trans,inf)
Daarop Adv(pron,aanw)
Maar Conj(neven) Adv(gew,geen_func,stell,onverv)
bokkenrijders N(soort,mv,neut)
Heeft V(hulp,ott,3,ev)
vermoeid V(trans,verl_dw,onverv)
reisleider N(soort,ev,neut)
diensten N(soort,mv,neut)
verrijkt V(trans,verl_dw,onverv)
Defares N(eigen,ev,neut)
ontoelaatbaar Adj(attr,stell,onverv)
heparine N(soort,ev,neut)
ontzegging N(soort,ev,neut)
harteloos Adj(adv,stell,onverv)
derden Num(rang,bep,zelfst,onverv)
waaruit Adv(pron,vrag)
dramaturgie N(soort,ev,neut)
glimmende V(intrans,teg_dw,verv_neut)
waag V(trans,imp)
medicijnen N(soort,mv,neut)
anderhalve Num(hoofd,bep,attr,onverv)
meegemaakt V(trans,verl_dw,onverv)
namen N(soort,mv,neut)
feestje N(soort,ev,neut)
zibeline N(soort,ev,neut)
Hoeksewaard N(eigen,ev,neut)
opvallend V(intrans,teg_dw,onverv)
behulp N(soort,ev,neut)
waar Adv(gew,vrag) Adv(gew,betr) Adj(attr,stell,onverv) Adv(pron,vrag) Adv(pron,betr)
lichaam N(soort,ev,neut)
gezinssamenwerking N(soort,ev,neut)
gekraakt V(trans,verl_dw,onverv)
jurk N(soort,ev,neut)
Ging V(intrans,ovt,1_of_2_of_3,ev)
aangebroken V(intrans,verl_dw,onverv)
Zieleman N(eigen,ev,neut)
maagpijn N(soort,ev,neut)
graven V(intrans,inf) V(trans,inf)
uitstekend Adj(attr,stell,onverv)
Negen Num(hoofd,bep,attr,onverv)
bejaardenwoningen N(soort,mv,neut)
ijskoude Adj(attr,stell,verv_neut)
raffinement N(soort,ev,neut)
bezighoudt V(refl,ott,3,ev)
slenterde V(intrans,ovt,1_of_2_of_3,ev)
afgekondigd V(trans,verl_dw,onverv)
Murton N(eigen,ev,neut)
lachen V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv)
rest N(soort,ev,neut)
hoeveel Num(hoofd,onbep,attr,stell,onverv)
welvaartsblik N(soort,ev,neut)
spreidt V(trans,ott,3,ev)
grof Adj(attr,stell,onverv)
griezelbeelden N(soort,mv,neut)
eenvoudige Adj(attr,stell,verv_neut)
sandwiches N(soort,mv,neut)
enkeling N(soort,ev,neut)
verspeend V(trans,verl_dw,onverv)
gros N(soort,ev,neut)
bakkerij N(soort,ev,neut)
seksboetieks N(soort,mv,neut)
Algerije N(eigen,ev,neut)
17-jarige Adj(attr,stell,verv_neut)
bevindt V(refl,ott,3,ev)
voorbeelden N(soort,mv,neut)
hopen V(intrans,ott,1_of_2_of_3,mv) N(soort,mv,neut)
geschilpunt N(soort,ev,neut)
eindigt V(intrans,ott,3,ev)
Mady N(eigen,ev,neut)
hotviool N(soort,ev,neut)
recensies N(soort,mv,neut)
stadsvolkje N(soort,ev,neut)
intensief Adj(attr,stell,onverv) Adj(adv,stell,onverv)
Danny N(eigen,ev,neut)
filmmagnaat N(soort,ev,neut)
blijde Adj(attr,stell,verv_neut)
cum Adj(adv,stell,onverv)
dooier N(soort,ev,neut)
leerden V(hulp,ovt,1_of_2_of_3,mv)
royale Adj(attr,stell,verv_neut)
getal N(soort,ev,neut)
desodorisanten N(soort,mv,neut)
Ussel N(eigen,ev,neut)
toerist N(soort,ev,neut)
verkiezingen N(soort,mv,neut)
martelingen N(soort,mv,neut)
genadeklap N(soort,ev,neut)
opperbest Adj(attr,overtr,onverv)
gezegd V(trans,verl_dw,onverv) V(intrans,verl_dw,onverv)
Rijnterrassen N(soort,mv,neut)
bevrijding N(soort,ev,neut)
100.000 Num(hoofd,bep,attr,onverv)
Bloemen N(soort,mv,neut)
muzikale Adj(attr,stell,verv_neut)
stelde V(trans,ovt,1_of_2_of_3,ev)
waard Adj(attr,stell,onverv)
cynisch Adj(adv,stell,onverv)
kunstenaars N(soort,mv,neut)
wandeling N(soort,ev,neut)
eierslang N(soort,ev,neut)
daartussen Adv(pron,aanw)
gillend V(intrans,teg_dw,onverv)
kabbelende V(intrans,teg_dw,verv_neut)
rij N(soort,ev,neut)
sprongen V(intrans,ovt,1_of_2_of_3,mv)
feestelijke Adj(attr,stell,verv_neut)
afloop N(soort,ev,neut)
rit N(soort,ev,neut)
redactie N(soort,ev,neut)
kabelbaan N(soort,ev,neut)
komende V(intrans,teg_dw,verv_neut)
minderheidsgroep N(soort,ev,neut)
Wapping N(eigen,ev,neut)
speelruimte N(soort,ev,neut)
trouwen V(intrans,inf)
bewondering N(soort,ev,neut)
wapen N(soort,ev,neut)
rokken N(soort,mv,neut)
TOEGANG N(soort,ev,neut)
schaken V(intrans,inf,subst) V(intrans,inf)
berustend V(intrans,teg_dw,onverv)
Schrijf V(trans,imp)
Brockhouse N(eigen,ev,neut)
Wayne N(eigen,ev,neut)
geprofileerde V(trans,verl_dw,verv_neut)
vertrouw V(trans,ott,1,ev)
Pezzei N(eigen,ev,neut)
geflankeerd V(trans,verl_dw,onverv)
overeenkomst N(soort,ev,neut)
bespreking N(soort,ev,neut)
flarden N(soort,mv,neut)
stelen V(trans,inf)
verlossen V(trans,inf)
spot N(soort,ev,neut)
ceintuur N(soort,ev,neut)
blijft V(hulp_of_kopp,ott,3,ev) V(intrans,ott,3,ev)
torens N(soort,mv,neut)
gravin N(soort,ev,neut)
verzorging N(soort,ev,neut)
reden V(intrans,ovt,1_of_2_of_3,mv)
negers N(soort,mv,neut)
hartpatient N(soort,ev,neut)
touwen N(soort,mv,neut)
dood N(soort,ev,neut) Adj(attr,stell,onverv) N(eigen,ev,neut)
Dompel V(trans,imp)
TROS-uitzending N(soort,ev,neut)
Overheersend V(intrans,teg_dw,onverv)
ziener N(soort,ev,neut)
verklaren V(trans,inf)
door Prep(voor) Conj(onder,met_inf) Prep(achter) Prep(comb) Adv(deel_adv) Misc(vreemd) Adv(gew,geen_func,stell,onverv) Adv(deel_v)
kwalijk Adj(attr,stell,onverv)
schilders N(soort,mv,neut)
uiteindelijk Adj(adv,stell,onverv)
woningen N(soort,mv,neut)
Bundes-sportheim N(soort,ev,neut)
kleertjes N(soort,mv,neut)
Toornsjtraat Misc(vreemd)
kalme Adj(attr,stell,verv_neut)
klooster N(soort,ev,neut)
tophitlijsten N(soort,mv,neut)
alle Pron(onbep,neut,attr) Pron(onbep,neut,zelfst)
Boeken N(soort,mv,neut)
kuiten N(soort,mv,neut)
ontvingen V(trans,ovt,1_of_2_of_3,mv)
samenwerking N(soort,ev,neut)
depressie N(soort,ev,neut)
redenen N(soort,mv,neut)
streven V(intrans,inf) V(intrans,inf,subst)
monter Adj(attr,stell,onverv)
opgeschoten V(trans,verl_dw,onverv)
veiligheid N(soort,ev,neut)
Zeker Adj(adv,stell,onverv)
Client N(soort,ev,neut)
Main N(eigen,ev,neut)
subtiel Adj(attr,stell,onverv)
variant N(soort,ev,neut) Adj(attr,stell,onverv)
honeymooners N(soort,mv,neut)
geest N(soort,ev,neut)
Noordzee N(eigen,ev,neut)
werkbesparende Adj(attr,stell,verv_neut)
argeloze Adj(attr,stell,verv_neut)
Sommigen Pron(onbep,neut,zelfst)
oefeningen N(soort,mv,neut)
intuitie N(soort,ev,neut)
herboren Adj(attr,stell,onverv)
epater Misc(vreemd)
bezitsdrang N(soort,ev,neut)
aandiende V(refl,ovt,1_of_2_of_3,ev)
vooraanstaande Adj(attr,stell,verv_neut)
Sgt. N(eigen,ev,neut)
demonstratiemiddag N(soort,ev,neut)
werkwijze N(soort,ev,neut)
Helvoirts N(eigen,ev,gen)
hoogte N(soort,ev,neut)
schenkers N(soort,mv,neut)
Kalverstraat N(eigen,ev,neut)
Nonnetje N(eigen,ev,neut)
gezamenlijke Adj(attr,stell,verv_neut)
behaard Adj(attr,stell,onverv)
gelaten V(trans,verl_dw,onverv)
Groningen N(eigen,ev,neut)
Voordeel N(soort,ev,neut)
vismethode N(soort,ev,neut)
business N(soort,ev,neut)
dorp N(soort,ev,neut)
lichaamsgewicht N(soort,ev,neut)
mededinging N(soort,ev,neut)
vriendjes N(soort,mv,neut)
Leen N(eigen,ev,neut)
spitsuur N(soort,ev,neut)
kattevoer N(soort,ev,neut)
vredig Adj(attr,stell,onverv)
Rotterdamse Adj(attr,stell,verv_neut)
sloten N(soort,mv,neut)
makkelijkst Adj(adv,vergr,onverv)
Jarenlang Adj(adv,stell,onverv)
litteratuur N(soort,ev,neut)
uitdrukkingen N(soort,mv,neut)
onafhankelijkheid N(soort,ev,neut)
uitlopen V(trans,inf) V(intrans,ott,1_of_2_of_3,mv)
postbode N(soort,ev,neut)
aanstekelijk Adj(adv,stell,onverv)
Darley N(eigen,ev,neut)
onderlinge Adj(attr,stell,verv_neut)
Pluizen N(soort,mv,neut)
Uil N(eigen,ev,neut)
gewonden V(trans,verl_dw,verv_mv)
Daarbij Adv(pron,aanw)
jeugd N(soort,ev,neut)
blijkt V(intrans,ott,3,ev) V(hulp_of_kopp,ott,3,ev)
bijten V(intrans,inf)
rok N(soort,ev,neut)
avonds N(soort,ev,gen)
rol N(soort,ev,neut)
veel Num(hoofd,onbep,attr,stell,onverv) Num(hoofd,onbep,zelfst,stell,onverv)
Uit Prep(voor)
technische Adj(attr,stell,verv_neut)
rot Adj(attr,stell,onverv)
Zethof N(eigen,ev,neut)
aanzoek N(soort,ev,neut)
kabinet-De N(eigen,ev,neut)
kerkezakje N(soort,ev,neut)
Buona N(eigen,ev,neut)
humbug N(soort,ev,neut)
wasbord N(soort,ev,neut)
alledaagse Adj(attr,stell,verv_neut)
export-managers N(soort,mv,neut)
boosdoeners N(soort,mv,neut)
O.a. Adv(gew,geen_func,stell,onverv)
critici N(soort,mv,neut)
vaker Adv(gew,geen_func,vergr,onverv)
Buitenspelende Adj(attr,stell,verv_neut)
spul N(soort,ev,neut)
krap Adj(adv,stell,onverv)
daad N(soort,ev,neut)
regisseur N(soort,ev,neut)
hoofdbureau N(soort,ev,neut)
verhuurder N(soort,ev,neut)
minderwaardigheidscomplex N(soort,ev,neut)
aanraking N(soort,ev,neut)
zover Adv(gew,aanw)
immense Adj(attr,stell,verv_neut)
bewapening N(soort,ev,neut)
daar Adv(gew,aanw) Adv(pron,aanw)
tweeendertighonderd Num(hoofd,bep,zelfst,onverv)
leraar N(soort,ev,neut)
daas Adj(attr,stell,onverv)
proeft V(trans,ott,3,ev)
kwaliteit N(soort,ev,neut)
gevorderd V(intrans,verl_dw,onverv)
vernieuwing N(soort,ev,neut)
aandrang N(soort,ev,neut)
initiatieven N(soort,mv,neut)
dringend Adv(gew,geen_func,stell,onverv)
lengten N(soort,mv,neut)
wassen V(trans,inf)
klassegewijze Adj(attr,stell,verv_neut)
duurste Adj(attr,overtr,verv_neut)
Bestelt V(trans,ott,2,ev)
rijksambtenaar N(soort,ev,neut)
boerderij N(soort,ev,neut)
kleren N(soort,mv,neut)
evenwicht N(soort,ev,neut)
turven V(intrans,inf)
kinderprogramma N(soort,ev,neut)
Luistert V(intrans,ott,2,ev)
vissersdorpen N(soort,mv,neut)
laagconjunctuur N(soort,ev,neut)
lezeressen N(soort,mv,neut)
blijmoedige Adj(attr,stell,verv_neut)
marasquin N(soort,ev,neut)
gekoeld V(trans,verl_dw,onverv)
opvalt V(intrans,ott,3,ev)
wordende V(hulp_of_kopp,teg_dw,verv_neut)
opeet V(trans,ott,3,ev)
TeleVizier N(eigen,ev,neut)
Middeleeuwse Adj(attr,stell,verv_neut)
diepte N(soort,ev,neut)
collier N(soort,ev,neut)
wand N(soort,ev,neut)
Stein N(eigen,ev,neut)
raison N(soort,ev,neut)
bierbrouwerij-kapitaal N(soort,ev,neut)
wang N(soort,ev,neut)
Ostenreich Misc(vreemd)
merkte V(trans,ovt,1_of_2_of_3,ev)
beraamde V(trans,ovt,1_of_2_of_3,ev)
tienduizenden Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
want Conj(neven)
levenloos Adj(attr,stell,onverv)
filmwereld N(soort,ev,neut)
Delfosse N(eigen,ev,neut)
Jackson N(eigen,ev,neut)
tesamen Adv(gew,geen_func,stell,onverv)
gedrang N(soort,ev,neut)
bleken V(hulp_of_kopp,ovt,1_of_2_of_3,mv)
akkoord N(soort,ev,neut)
tehuis N(soort,ev,neut)
homofielen N(soort,mv,neut)
allergie N(soort,ev,neut)
partijen N(soort,mv,neut)
bonte Adj(attr,stell,verv_neut)
eksperimenteren V(intrans,inf)
Schiedam N(eigen,ev,neut)
Wassenaar N(eigen,ev,neut)
opvang N(soort,ev,neut)
bezighouden V(refl,inf) V(refl,ott,1_of_2_of_3,mv)
reisverhalen N(soort,mv,neut)
fauteuil N(soort,ev,neut)
Minnaert N(eigen,ev,neut)
tillen V(trans,inf)
Grieg N(eigen,ev,neut)
Europese Adj(attr,stell,verv_neut)
jawoord N(soort,ev,neut)
Nicholson N(eigen,ev,neut)
grootouders N(soort,mv,neut)
schaamtegevoelens N(soort,mv,neut)
publicitair Adj(adv,stell,onverv)
kleiblokken N(soort,mv,neut)
heldere Adj(attr,stell,verv_neut)
verbouwd V(trans,verl_dw,onverv)
uitbleef V(intrans,ovt,1_of_2_of_3,ev)
vriendschap N(soort,ev,neut)
onderling Adj(attr,stell,onverv)
kreten N(soort,mv,neut)
dag- N(soort,ev,neut) N(soort,mv,neut)
aantallen N(soort,mv,neut)
Willibrords N(eigen,ev,gen)
terzijde Adv(gew,geen_func,stell,onverv)
vakje N(soort,ev,neut)
lacht V(intrans,ott,3,ev)
sophisticated Adj(attr,stell,onverv)
dag N(soort,ev,neut)
attenties N(soort,mv,neut)
dak N(soort,ev,neut)
Oscar N(eigen,ev,neut)
dan Adv(gew,aanw) Conj(onder,met_fin) Conj(neven)
Horeca-attractie N(soort,ev,neut)
aanvang N(soort,ev,neut)
aardappelschepen N(soort,mv,neut)
trainingspak N(soort,ev,neut)
beschouwden V(trans,ovt,1_of_2_of_3,mv)
das N(soort,ev,neut)
dat Conj(onder,met_fin) Pron(betr,neut,zelfst) Pron(aanw,neut,zelfst) Adv(gew,vrag) Pron(aanw,neut,attr) Conj(neven)
rookvlees N(soort,ev,neut)
verloofd V(trans,verl_dw,onverv)
advertenties N(soort,mv,neut)
rug N(soort,ev,neut)
lachte V(intrans,ovt,1_of_2_of_3,ev)
strategen N(soort,mv,neut)
Hugenoten N(soort,mv,neut)
onderhouden V(trans,inf) V(trans,verl_dw,onverv)
Jaarbeurshallen N(eigen,mv,neut)
beide Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
kwark N(soort,ev,neut)
uithoeken N(soort,mv,neut)
rum N(soort,ev,neut)
gerust Adj(adv,stell,onverv)
moreel Adj(adv,stell,onverv)
Mars N(eigen,ev,neut)
voerde V(trans,ovt,1_of_2_of_3,ev)
Truida N(eigen,ev,neut)
Mary N(eigen,ev,neut)
verkenning N(soort,ev,neut)
verder Adj(adv,vergr,onverv)
getekend V(trans,verl_dw,onverv)
zuurstof N(soort,ev,neut)
toonden V(trans,ovt,1_of_2_of_3,mv)
gebroeders N(soort,mv,neut)
incasseren V(trans,inf)
Goethe N(eigen,ev,neut)
dromend V(intrans,teg_dw,onverv)
toepassen V(trans,inf)
Super Adj(attr,stell,onverv)
verplichtingen N(soort,mv,neut)
veld N(soort,ev,neut)
vele Num(hoofd,onbep,attr,stell,verv_neut)
vermijden V(trans,inf)
tv-assistente N(soort,ev,neut)
ware Adj(attr,stell,verv_neut) V(intrans,conj)
gymnasium N(soort,ev,neut)
donkere Adj(attr,stell,verv_neut)
aangekondigd V(trans,verl_dw,onverv)
Aigues-Mortes N(eigen,ev,neut)
bekommert V(refl,ott,3,ev)
Denemarken N(eigen,ev,neut)
vleugels N(soort,mv,neut)
warm Adj(attr,stell,onverv)
Lagerhuis N(eigen,ev,neut)
kwast N(soort,ev,neut)
kleinere Adj(attr,vergr,verv_neut)
voeren V(trans,inf)
verstek N(soort,ev,neut)
prediken V(intrans,inf)
keerzijde N(soort,ev,neut)
concentratie N(soort,ev,neut)
getroffen V(trans,verl_dw,onverv)
westkant N(soort,ev,neut)
priester N(soort,ev,neut)
sterven V(intrans,inf)
seizoen N(soort,ev,neut)
schuldgevoel N(soort,ev,neut)
reiken V(trans,inf)
ofschoon Conj(onder,met_fin)
darmen N(soort,mv,neut)
nieuwjaarsnacht N(soort,ev,neut)
NATO N(eigen,ev,neut)
soldaat N(soort,ev,neut)
public N(soort,mv,neut)
verschrikkelijk Adj(adv,stell,onverv)
tussenkomst N(soort,ev,neut)
verhouding N(soort,ev,neut)
waardevrije Adj(attr,stell,verv_neut)
hoed N(soort,ev,neut)
champagneglas N(soort,ev,neut)
hoef V(hulp,ott,2,ev) V(hulp,ott,1,ev)
buitenbeks Adv(gew,geen_func,stell,onverv)
slechter Adj(attr,vergr,onverv)
aanrukken V(trans,inf)
inleiding N(soort,ev,neut)
methode N(soort,ev,neut)
rituele Adj(attr,stell,verv_neut)
hoek N(soort,ev,neut)
mogelijke Adj(attr,stell,verv_neut)
knalbommen N(soort,mv,neut)
800,- Num(hoofd,bep,attr,onverv)
oosthoek N(soort,ev,neut)
voorzag V(trans,ovt,1_of_2_of_3,ev)
hoes N(soort,ev,neut)
minuten N(soort,mv,neut)
constateerde V(trans,ovt,1_of_2_of_3,ev)
bekwaamheid N(soort,ev,neut)
Spaanse Adj(attr,stell,verv_neut)
schoen N(soort,ev,neut)
plaatsen N(soort,mv,neut) V(trans,inf)
beige Adj(zelfst,stell,onverv) Adj(attr,stell,onverv)
opzetten V(trans,inf,subst) V(trans,inf)
Maup N(eigen,ev,neut)
moekes N(soort,mv,neut)
bestond V(intrans,ovt,1_of_2_of_3,ev)
uitspraken N(soort,mv,neut)
vent N(soort,ev,neut)
mascotte-bezitter N(soort,ev,neut)
weerzin N(soort,ev,neut)
teckeldorp N(soort,ev,neut)
Petersen N(eigen,ev,neut)
Elfrink N(eigen,ev,neut)
dek N(soort,ev,neut)
del N(eigen,ev,neut)
den N(eigen,ev,neut) Art(bep,zijd,dat) N(eigen,mv,neut)
afkeer N(soort,ev,neut)
kerels N(soort,mv,neut)
eenvoud N(soort,ev,neut)
schuurtjes N(soort,mv,neut)
programma N(soort,ev,neut)
der Art(bep,zijd_of_mv,gen) N(eigen,ev,neut)
des Adv(gew,aanw) N(eigen,ev,neut) Art(bep,zijd_of_onzijd,gen)
Kijk V(intrans,imp) Int
voorlopers N(soort,mv,neut)
heerlijkheden N(soort,mv,neut)
geloof V(trans,ott,1,ev) V(intrans,ott,1,ev) N(soort,ev,neut)
klemmen N(soort,mv,neut)
Garfunkel N(eigen,ev,neut)
Edwin N(eigen,ev,neut)
regeling N(soort,ev,neut)
raadsel N(soort,ev,neut)
tegenspel N(soort,ev,neut)
Vivarais N(eigen,ev,neut)
hekel N(soort,ev,neut)
konflikt N(soort,ev,neut)
vloeiend V(intrans,teg_dw,onverv)
onderscheid N(soort,ev,neut)
verzeild V(intrans,verl_dw,onverv)
Gallisch Adj(attr,stell,onverv)
stamppot N(soort,ev,neut)
regelmatige Adj(attr,stell,verv_neut)
sprookjesogen N(soort,mv,neut)
Kika N(eigen,ev,neut)
hoge Adj(attr,stell,verv_neut)
puntschoenen N(soort,mv,neut)
lipsticks N(soort,mv,neut)
bescherming N(soort,ev,neut)
begroeid V(trans,verl_dw,onverv)
kleinzieligheid N(soort,ev,neut)
eenentwintig Num(hoofd,bep,attr,onverv)
persoonlijk Adj(adv,stell,onverv) Adj(attr,stell,onverv)
b.v. Adv(gew,geen_func,stell,onverv)
waterrijke Adj(attr,stell,verv_neut)
slaakte V(trans,ovt,1_of_2_of_3,ev)
afvloeit V(intrans,ott,3,ev)
meest-gevraagd Adj(attr,overtr,onverv)
ver- N(soort,mv,neut)
tribune N(soort,ev,neut)
Arme Adj(attr,stell,verv_neut)
Apostel N(soort,ev,neut)
discussie N(soort,ev,neut)
tijdperk N(soort,ev,neut)
verzuchtte V(trans,ovt,1_of_2_of_3,ev)
hoofdzakelijk Adj(adv,stell,onverv)
verandering N(soort,ev,neut)
afkomstige Adj(attr,stell,verv_neut)
bedrijven N(soort,mv,neut) V(trans,inf)
uitkijktoren N(soort,ev,neut)
waargenomen V(trans,verl_dw,onverv)
kelen N(soort,mv,neut)
godsdienstig Adj(attr,stell,onverv)
getto N(soort,ev,neut)
spreekkamer N(soort,ev,neut)
opgewektheid N(soort,ev,neut)
wandelingen N(soort,mv,neut)
inspireert V(trans,ott,3,ev)
Groningse Adj(attr,stell,verv_neut)
afzonderlijk Adj(adv,stell,onverv)
assistente N(soort,ev,neut)
Sportief Adj(attr,stell,onverv)
pafferige Adj(attr,stell,verv_neut)
damslapers N(soort,mv,neut)
kinderbijslag N(soort,ev,neut)
anticoagulantiatabletten N(soort,mv,neut)
oproepen V(trans,inf)
Afgejakkerd V(trans,verl_dw,onverv)
VVD N(eigen,ev,neut)
energieverslinders N(soort,mv,neut)
inspecteren V(trans,inf)
verdelen V(trans,ott,1_of_2_of_3,mv)
dame N(soort,ev,neut)
omgeven V(trans,verl_dw,onverv)
schrijvers N(soort,mv,neut)
ineenkrimpen V(intrans,inf)
Anneke N(eigen,ev,neut)
bijgeloof N(soort,ev,neut)
zelfbevrediging N(soort,ev,neut)
werelds N(soort,ev,gen)
Berlin N(eigen,ev,neut)
geknipt V(trans,verl_dw,onverv)
vaccinatie N(soort,ev,neut)
onthaal N(soort,ev,neut)
nemen V(trans,inf) V(trans,inf,subst) V(trans,ott,1_of_2_of_3,mv)
gewicht N(soort,ev,neut)
constateren V(trans,inf)
vrijmaking N(soort,ev,neut)
damp N(soort,ev,neut)
Uddel N(eigen,ev,neut)
spastische Adj(attr,stell,verv_neut)
zachtaardig Adj(attr,stell,onverv)
vers Adj(attr,stell,onverv)
die Pron(betr,neut,zelfst) Pron(aanw,neut,zelfst) Pron(aanw,neut,attr) Misc(vreemd)
minder Num(hoofd,onbep,attr,vergr,onverv) Num(hoofd,onbep,zelfst,vergr,onverv)
dik Adj(attr,stell,onverv) Adj(adv,stell,onverv)
dattie Conj(onder,met_fin)
jongetje N(soort,ev,neut)
toespraken N(soort,mv,neut)
bereikt V(trans,verl_dw,onverv) V(trans,ott,3,ev)
King N(eigen,ev,neut)
erelijst N(soort,ev,neut)
Vincent N(eigen,ev,neut)
wanhopig Adj(attr,stell,onverv)
getuigenissen N(soort,mv,neut)
wenkbrauwen N(soort,mv,neut)
plaatsje N(soort,ev,neut)
dis N(soort,ev,neut)
dit Pron(aanw,neut,attr) Pron(aanw,neut,zelfst)
afscheiding N(soort,ev,neut)
Jacqueline N(eigen,ev,neut)
woonkamer N(soort,ev,neut)
hoogleraar N(soort,ev,neut)
Nigel N(eigen,ev,neut)
regeringskliek N(soort,ev,neut)
Oosterbeek N(eigen,ev,neut)
dank N(soort,ev,neut)
visitelijst N(soort,ev,neut)
levenloze Adj(attr,stell,verv_neut)
slotte N(soort,ev,dat)
bevochtiging N(soort,ev,neut)
binnenstad N(soort,ev,neut)
vuurtorens N(soort,mv,neut)
Morbihan N(eigen,ev,neut)
paardemiddel N(soort,ev,neut)
vest N(soort,ev,neut)
kindsaf Adv(gew,geen_func,stell,onverv)
hoezeer Adv(gew,betr)
verantwoorde V(trans,verl_dw,verv_neut) N(eigen,ev,neut)
optilt V(trans,ott,2,ev)
zedelijkheidswetgeving N(soort,ev,neut)
Maybella N(eigen,ev,neut)
waarvan Adv(pron,vrag)
middelen N(soort,mv,neut)
schreef V(trans,ovt,1_of_2_of_3,ev)
aloude Adj(attr,stell,verv_neut)
uitstekende Adj(attr,stell,verv_neut) V(intrans,teg_dw,verv_neut)
kabinet N(soort,ev,neut)
verrassing N(soort,ev,neut)
begrijpelijke Adj(attr,stell,verv_neut)
nergens Adv(gew,onbep)
opera N(soort,ev,neut)
Surinamer N(soort,ev,neut)
HEL N(soort,ev,neut)
vereeuwigen V(trans,inf)
langzamerhand Adv(gew,geen_func,stell,onverv)
Leve V(intrans,conj)
alweer Adv(gew,geen_func,stell,onverv)
Griffe N(eigen,ev,neut)
migratie-balans N(soort,ev,neut)
mouwen N(soort,mv,neut)
vernielingen N(soort,mv,neut)
landschap N(soort,ev,neut)
toekomstig Adj(attr,stell,onverv)
bestaan V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv) N(soort,ev,neut) V(intrans,verl_dw,onverv)
holt V(intrans,ott,3,ev)
doornemen V(trans,inf)
Culturele Adj(attr,stell,verv_neut)
rondkijkende V(intrans,teg_dw,verv_neut)
slaagt V(intrans,ott,3,ev)
bestaat V(intrans,ott,3,ev)
veranderen V(intrans,inf) V(trans,ott,1_of_2_of_3,mv)
bidt V(trans,ott,3,ev)
Echt Adj(adv,stell,onverv)
bovenplank N(soort,ev,neut)
vermijdbaarheid N(soort,ev,neut)
OostDuitsland N(eigen,ev,neut)
Workshop N(eigen,ev,neut)
oogjes N(soort,mv,neut)
onverbeterlijk Adj(adv,stell,onverv)
taaie Adj(attr,stell,verv_neut)
Engelse Adj(attr,stell,verv_neut)
realiseren V(trans,inf) V(trans,ott,1_of_2_of_3,mv)
fungeren V(intrans,inf)
extra's N(soort,mv,neut)
dll N(soort,mv,neut)
duizeligheid N(soort,ev,neut)
overgeslagen V(trans,verl_dw,onverv)
elementen N(soort,mv,neut)
spitse Adj(attr,stell,verv_neut)
zedelijkheid N(soort,ev,neut)
miljoenenpubliek N(soort,ev,neut)
geleend V(trans,verl_dw,onverv)
displaced Adj(attr,stell,onverv)
misdadigers N(soort,mv,neut)
schijnt V(hulp_of_kopp,ott,3,ev) V(intrans,ott,3,ev)
rafelig Adj(attr,stell,onverv)
glanzend V(intrans,teg_dw,onverv)
Trafalgar N(eigen,ev,neut)
Hieruit Adv(pron,aanw)
rechtvaardige Adj(attr,stell,verv_neut)
Zuidvietnamese Adj(attr,stell,verv_neut)
bier N(soort,ev,neut)
verantwoordelijk Adj(attr,stell,onverv)
volksvergadering N(soort,ev,neut)
geweldig Adj(attr,stell,onverv) Adj(adv,stell,onverv)
Agadir N(eigen,ev,neut)
kondigt V(trans,ott,3,ev)
soort N(soort,ev,neut)
verweet V(trans,ovt,1_of_2_of_3,ev)
West-Europa N(eigen,ev,neut)
showbusinessmakers N(soort,mv,neut)
effectieve Adj(attr,stell,verv_neut)
apparaat N(soort,ev,neut)
hond N(soort,ev,neut)
confrontatie N(soort,ev,neut)
Maastricht N(eigen,ev,neut)
Martine N(eigen,ev,neut)
'k Pron(per,1,ev,nom)
'm Pron(per,3,ev,dat_of_acc)
garage N(soort,ev,neut)
'n Art(onbep,zijd_of_onzijd,neut)
schone Adj(attr,stell,verv_neut)
maatschappij-kritisch Adj(adv,stell,onverv)
resp. Adj(adv,stell,onverv)
's Art(bep,zijd_of_onzijd,gen)
etalages N(soort,mv,neut)
't Art(bep,onzijd,neut) Pron(per,3,ev,nom) N(eigen,ev,neut) Pron(per,3,ev,dat_of_acc) Pron(onbep,neut,zelfst)
Marseille N(eigen,ev,neut)
schonk V(trans,ovt,1_of_2_of_3,ev)
trekpleisters N(soort,mv,neut)
beleven V(trans,inf)
wasserij N(soort,ev,neut)
nodig Adj(attr,stell,onverv) Adj(adv,stell,onverv)
kwartier N(soort,ev,neut)
bloeien V(intrans,inf)
Marco N(eigen,ev,neut)
hoog Adj(attr,stell,onverv) Adj(adv,stell,onverv)
industrielen N(soort,mv,neut)
betere Adj(attr,vergr,verv_neut)
elke Pron(onbep,neut,attr)
bekwaamste Adj(attr,overtr,verv_neut)
besteedt V(trans,ott,3,ev)
zacht Adj(attr,stell,onverv) Adj(adv,stell,onverv)
schoof V(trans,ovt,1_of_2_of_3,ev)
hoon N(soort,ev,neut)
hoop N(soort,ev,neut) V(intrans,ott,1,ev) V(trans,ott,1,ev)
hoor Int V(trans,ott,2,ev) V(trans,ott,1,ev) V(intrans,ott,1,ev)
soepel Adj(attr,stell,onverv) Adj(adv,stell,onverv)
geduldig Adj(adv,stell,onverv)
pilaren N(soort,mv,neut)
duurde V(trans,ovt,1_of_2_of_3,ev)
school N(soort,ev,neut)
schoon Adj(attr,stell,onverv)
sprong V(intrans,ovt,1_of_2_of_3,ev)
schoot N(soort,ev,neut)
tendens N(soort,ev,neut)
doe V(trans,ott,2,ev) V(intrans,ott,1,ev) V(trans,imp) V(trans,ott,1,ev)
Hildegard N(eigen,ev,neut)
wetgeving N(soort,ev,neut)
I'm Misc(vreemd)
schooltijd N(soort,ev,neut)
sax N(soort,ev,neut)
Bukena N(eigen,ev,neut)
dol Adj(attr,stell,onverv)
Duys N(eigen,ev,neut)
schenken V(trans,inf)
dom Adj(attr,stell,onverv)
vrede N(soort,ev,neut)
heerlijks Adj(zelfst,stell,verv_gen)
sterilisatie N(soort,ev,neut)
luchthaven N(soort,ev,neut)
onbeperkt Adj(adv,stell,onverv)
concentratievermogen N(soort,ev,neut)
fotograaf N(soort,ev,neut)
kleinen Adj(zelfst,stell,verv_mv)
makkelijk Adj(adv,stell,onverv)
kleiner Adj(attr,vergr,onverv)
Christoph N(eigen,ev,neut)
oorverdovende Adj(attr,stell,verv_neut)
spreekvoorbeeld N(soort,ev,neut)
halen V(trans,inf) V(trans,ott,1_of_2_of_3,mv)
Voetgangers N(eigen,ev,neut)
cent N(soort,ev,neut)
borgsom N(soort,ev,neut)
bevoogding N(soort,ev,neut)
rugpatroon N(soort,ev,neut)
,, Punc(hellip)
dr. N(eigen,ev,neut)
rationalisatie N(soort,ev,neut)
spiegel N(soort,ev,neut)
uitdrukkelijk Adj(adv,stell,onverv)
eethuisjes N(soort,mv,neut)
eigene Adj(zelfst,stell,verv_neut)
geleerd V(trans,verl_dw,onverv)
scheidenden V(intrans,teg_dw,verv_mv)
ijzige Adj(attr,stell,verv_neut)
vrees N(soort,ev,neut) V(trans,ott,1,ev) V(intrans,ott,1,ev)
woningwetwoningen N(soort,mv,neut)
meegenieten V(intrans,inf)
knechtje N(soort,ev,neut)
gebreide V(trans,verl_dw,verv_neut)
teksten N(soort,mv,neut)
inzat V(intrans,ovt,1_of_2_of_3,ev)
uittrekken V(trans,inf)
wereldkampioene N(soort,ev,neut)
gezongen V(trans,verl_dw,onverv)
3500 Num(hoofd,bep,attr,onverv)
reizen V(intrans,inf,subst) N(soort,mv,neut)
kleden V(trans,inf)
gevuld V(trans,verl_dw,onverv)
glycogeen N(soort,ev,neut)
ommuurd V(trans,verl_dw,onverv)
kamer N(soort,ev,neut)
bestelling N(soort,ev,neut)
bijl N(soort,ev,neut)
Peel N(eigen,ev,neut)
Drugstore N(soort,ev,neut)
studeren V(intrans,inf)
deelt V(trans,ott,3,ev)
Pasen N(eigen,ev,neut)
echtgenoot N(soort,ev,neut)
Salzburg N(eigen,ev,neut)
passen V(intrans,ott,1_of_2_of_3,mv) V(intrans,inf)
mishandelingen N(soort,mv,neut)
George N(eigen,ev,neut)
vampiers N(soort,mv,neut)
waarderen V(trans,inf)
luisterde V(intrans,ovt,1_of_2_of_3,ev)
gevluchte V(intrans,verl_dw,verv_neut)
verhaaltje N(soort,ev,neut)
mesterij N(soort,ev,neut)
AVRO N(eigen,ev,neut)
vroegrijpe Adj(attr,stell,verv_neut)
Poswick N(eigen,ev,neut)
rimboe N(soort,ev,neut)
leegte N(soort,ev,neut)
Zwitserse Adj(attr,stell,verv_neut)
.. Punc(hellip)
gevraagd V(trans,verl_dw,onverv) V(intrans,verl_dw,onverv)
kinderlijk Adj(attr,stell,onverv)
Brabant N(eigen,ev,neut)
vervoerde V(trans,ovt,1_of_2_of_3,ev)
schrijft V(trans,ott,3,ev) V(trans,ott,2,ev)
zijplanken N(soort,mv,neut)
gebruikelijk Adj(attr,stell,onverv)
zeef N(soort,ev,neut)
Waardenburg N(eigen,ev,neut)
geworden V(hulp_of_kopp,verl_dw,onverv)
10.000 Num(hoofd,bep,attr,onverv)
verloofde N(soort,ev,neut)
binten N(soort,mv,neut)
afscheidingsprodukt N(soort,ev,neut)
vanmorgen Adv(gew,geen_func,stell,onverv)
opdrogen V(intrans,ott,1_of_2_of_3,mv)
meervoudige Adj(attr,stell,verv_neut)
chauffeur N(soort,ev,neut)
seq N(eigen,ev,neut)
zeep N(soort,ev,neut)
aanschouwelijk Adj(attr,stell,onverv)
zeer Adv(gew,geen_func,stell,onverv)
meegebrachte V(trans,verl_dw,verv_neut)
Heemsteedse Adj(attr,stell,verv_neut)
niet-kunstonderwijsinstelling N(soort,ev,neut)
aandoenlijks Adj(attr,stell,verv_gen)
sex N(soort,ev,neut)
inzond V(trans,ovt,1_of_2_of_3,ev)
november N(eigen,ev,neut)
reclameboodschappen N(soort,mv,neut)
puntige Adj(attr,stell,verv_neut)
luisteren V(intrans,inf)
popgroepen N(soort,mv,neut)
journalist N(soort,ev,neut)
wantoestanden N(soort,mv,neut)
understand Misc(vreemd)
leerstoel N(soort,ev,neut)
vervoeren V(trans,inf)
armen N(soort,mv,neut) Adj(zelfst,stell,verv_mv)
Maria N(eigen,ev,neut)
Saharadomeinen N(soort,mv,neut)
haar Pron(bez,3,ev,neut,attr) Pron(per,3,ev,dat_of_acc) N(soort,ev,neut)
archipel N(soort,ev,neut)
schaal N(soort,ev,neut)
massa's N(soort,mv,neut)
haat V(trans,ott,1,ev) V(trans,ott,3,ev)
schuwen V(trans,ott,1_of_2_of_3,mv)
Avonds N(soort,ev,gen)
henzelf Pron(per,3,mv,dat_of_acc)
Hugo N(eigen,ev,neut)
houd V(trans,imp) V(intrans,ott,1,ev) V(refl,ott,2,ev)
gemiddelde Adj(attr,stell,verv_neut) Adj(zelfst,stell,verv_neut)
uitlaat V(refl,ott,3,ev)
drinkend V(intrans,teg_dw,onverv)
dermate Adv(gew,aanw)
zorgvuldig Adj(adv,stell,onverv)
vrouwelijkheid N(soort,ev,neut)
maquettes N(soort,mv,neut)
berijdbare Adj(attr,stell,verv_neut)
folkloristische Adj(attr,stell,verv_neut)
gekenmerkt V(trans,verl_dw,onverv)
hout N(soort,ev,neut)
Van Prep(voor) N(eigen,mv,neut) N(eigen,ev,neut)
slaapt V(intrans,ott,3,ev)
God N(eigen,ev,neut)
HOE Adv(gew,betr)
gouden Adj(attr,stell,onverv)
inzet N(soort,ev,neut)
wasautomaat N(soort,ev,neut)
kleurige Adj(attr,stell,verv_neut)
Veertig Num(hoofd,bep,attr,onverv)
drukbezette Adj(attr,stell,verv_neut)
instelling N(soort,ev,neut)
zegt V(trans,ott,3,ev) V(trans,ott,2,ev)
voorjaar N(soort,ev,neut)
opgaan V(trans,ott,1_of_2_of_3,mv) V(intrans,inf)
waggelbenen N(soort,mv,neut)
huiseigenaar N(soort,ev,neut)
dun Adj(adv,stell,onverv)
opleiding N(soort,ev,neut)
reportage N(soort,ev,neut)
opgaat V(intrans,ott,3,ev)
wielrennen V(intrans,inf)
dus Adv(gew,aanw)
lachten V(intrans,ovt,1_of_2_of_3,mv) V(trans,ovt,1_of_2_of_3,mv)
verwend V(trans,verl_dw,onverv)
vanillesuiker N(soort,ev,neut)
10 Num(hoofd,bep,attr,onverv)
begreep V(trans,ovt,1_of_2_of_3,ev)
11 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
bink N(soort,ev,neut)
pleziertje N(soort,ev,neut)
12 Num(hoofd,bep,attr,onverv)
13 Num(hoofd,bep,attr,onverv) N(eigen,ev,neut)
onooglijke Adj(zelfst,stell,verv_neut)
14 Num(hoofd,bep,attr,onverv)
15 Num(hoofd,bep,attr,onverv)
klasse N(soort,ev,neut)
beesten N(soort,mv,neut)
17 Num(hoofd,bep,attr,onverv)
18 Num(hoofd,bep,attr,onverv) N(eigen,ev,neut)
samengesteld V(trans,verl_dw,onverv)
19 Num(hoofd,bep,attr,onverv)
Huib N(eigen,ev,neut)
woning N(soort,ev,neut)
speurt V(intrans,ott,3,ev)
kruid N(soort,ev,neut)
Mortelmans N(eigen,ev,neut)
orde N(soort,ev,neut)
echtgenote N(soort,ev,neut)
concentreert V(refl,ott,3,ev)
Huis N(eigen,ev,neut)
senator N(soort,ev,neut)
koren N(soort,mv,neut)
Marquet N(eigen,ev,neut)
veiligheidssluitingen N(soort,mv,neut)
ouderen Adj(zelfst,vergr,verv_neut)
onderwereld N(soort,ev,neut)
EEG-landen N(soort,mv,neut)
levendig Adj(attr,stell,onverv)
minderwaardig Adj(attr,stell,onverv)
20 Num(hoofd,bep,attr,onverv) N(soort,mv,neut)
21 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
22 Num(hoofd,bep,attr,onverv)
23 Num(hoofd,bep,attr,onverv)
Nigeria-Nok N(eigen,ev,neut)
voeden V(trans,inf)
groei N(soort,ev,neut)
24 Num(hoofd,bep,attr,onverv)
25 Num(hoofd,bep,attr,onverv)
onbevredigde Adj(attr,stell,verv_neut)
herkenbaar Adj(attr,stell,onverv)
Vernons N(eigen,ev,gen)
26 Num(hoofd,bep,attr,onverv)
showbis N(soort,ev,neut)
27 Num(hoofd,bep,attr,onverv)
aangaat V(trans,ott,3,ev)
Marbert N(eigen,ev,neut)
groen Adj(zelfst,stell,onverv) Adj(attr,stell,onverv)
29 Num(hoofd,bep,zelfst,onverv)
groep N(soort,ev,neut)
parapsychologie N(soort,ev,neut)
schade N(soort,ev,neut)
zomaar Adv(gew,geen_func,stell,onverv)
buurt N(soort,ev,neut)
groet N(soort,ev,neut)
reeds Adv(gew,geen_func,stell,onverv)
recept N(soort,ev,neut)
Christ N(eigen,ev,neut)
spiegelglas N(soort,ev,neut)
slapen V(intrans,inf)
eigenhandig Adj(adv,stell,onverv)
ruim Adj(adv,stell,onverv) Adj(attr,stell,onverv)
uitgevoerd V(trans,verl_dw,onverv)
huiden N(soort,mv,neut)
schalen N(soort,mv,neut)
oren N(soort,mv,neut)
30 Num(hoofd,bep,attr,onverv)
31 Num(hoofd,bep,attr,onverv)
ijlboden N(soort,mv,neut)
kortstondige Adj(attr,stell,verv_neut)
niettemin Adv(gew,geen_func,stell,onverv)
36 Num(hoofd,bep,attr,onverv)
39 Num(hoofd,bep,zelfst,onverv)
afdelingslijst N(soort,ev,neut)
hierbij Adv(pron,aanw)
heftig Adj(adv,stell,onverv)
Columbusstraat N(eigen,ev,neut)
Sultan N(soort,ev,neut)
gelang N(soort,ev,neut)
2e Num(rang,bep,attr,onverv)
katholiek N(soort,ev,neut)
Scandinavische Adj(attr,stell,verv_neut)
patronaatszaaltje N(soort,ev,neut)
radioprogramma N(soort,ev,neut)
volkskunst N(soort,ev,neut)
bestand Adj(attr,stell,onverv)
buitenwereld N(soort,ev,neut)
aftandse Adj(attr,stell,verv_neut)
interne Adj(attr,stell,verv_neut)
40 Num(hoofd,bep,attr,onverv)
41 Num(hoofd,bep,zelfst,onverv)
42 Num(hoofd,bep,attr,onverv)
verhoging N(soort,ev,neut)
speelkamer N(soort,ev,neut)
45 Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv)
46 Num(hoofd,bep,attr,onverv)
aangevraagde V(trans,verl_dw,verv_neut)
politieke Adj(attr,stell,verv_neut)
ski V(intrans,ott,1,ev) N(soort,ev,neut)
Ver Adj(adv,stell,onverv)
Rabenhauptstraat N(eigen,ev,neut)
aanleg N(soort,ev,neut)
3a N(eigen,ev,neut)
Dietrich N(eigen,ev,neut)
opvattingen N(soort,mv,neut)
Dines N(eigen,ev,gen)
opening N(soort,ev,neut)
tussen Prep(voor)
Hulp N(soort,ev,neut)
voedselbronnen N(soort,mv,neut)
uitgezonden V(trans,verl_dw,onverv)
Patsajew N(eigen,ev,neut)
krult V(intrans,ott,3,ev)
zandbak N(soort,ev,neut)
sla V(trans,imp)
50 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
51 Num(hoofd,bep,zelfst,onverv)
rukt V(intrans,ott,3,ev)
beiden Num(hoofd,bep,zelfst,verv_mv)
53 Num(hoofd,bep,attr,onverv)
gecoiffeerd V(trans,verl_dw,onverv)
zelf Pron(aanw,neut,attr,w_zelf)
Richard N(eigen,ev,neut)
56 Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv)
circulerend V(intrans,teg_dw,onverv)
57 Num(hoofd,bep,zelfst,onverv)
59 Num(hoofd,bep,zelfst,onverv)
vergezellen V(trans,inf)
snelheidsmaniakken N(soort,mv,neut)
verbeteren V(intrans,inf)
Mascouvin N(eigen,ev,neut)
Tsji N(eigen,ev,neut)
Erik N(eigen,ev,neut) N(eigen,ev,gen)
groenachtige Adj(attr,stell,verv_neut)
nagellak N(soort,ev,neut)
kitsch N(soort,ev,neut)
meubilair N(soort,ev,neut)
niemand Pron(onbep,neut,zelfst)
hersenen N(soort,mv,neut)
60 Num(hoofd,bep,attr,onverv)
Martel N(eigen,ev,neut)
betrokken V(trans,verl_dw,onverv)
Verder Adj(adv,vergr,onverv)
likeur N(soort,ev,neut)
beperkten V(refl,ovt,1_of_2_of_3,mv)
uithoudingsvermogen N(soort,ev,neut)
Graham N(eigen,ev,neut)
Doordat Conj(onder,met_fin)
betaalden V(trans,ovt,1_of_2_of_3,mv)
Reynolds N(eigen,ev,neut)
65 Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv)
functie N(soort,ev,neut)
67 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
werkelijke Adj(attr,stell,verv_neut)
stijlopvatting N(soort,ev,neut)
Zelfs Adv(gew,geen_func,stell,onverv)
Bangma N(eigen,ev,neut)
tientallen N(soort,mv,neut)
gevoeligheid N(soort,ev,neut)
Schubert N(eigen,ev,neut)
advocaat N(soort,ev,neut)
verknoeid V(trans,verl_dw,onverv)
goedgekeurd V(trans,verl_dw,onverv)
Chinese Adj(attr,stell,verv_neut)
velletje N(soort,ev,neut)
loef N(soort,ev,neut)
loei N(soort,ev,neut)
teruggegaan V(intrans,verl_dw,onverv)
advocaten N(soort,mv,neut)
70 Num(hoofd,bep,attr,onverv)
Nauwelijks Adv(gew,geen_func,stell,onverv)
72 Num(hoofd,bep,attr,onverv)
konflikten N(soort,mv,neut)
74 Num(hoofd,bep,attr,onverv)
spiegels N(soort,mv,neut)
geroepen V(trans,verl_dw,onverv)
vandoor Adv(gew,geen_func,stell,onverv)
synoniem Adj(attr,stell,onverv)
bits Adj(attr,stell,onverv)
bijeenzoeken V(trans,inf)
laatsgenoemde Adj(attr,stell,verv_neut)
blaffen V(trans,ott,1_of_2_of_3,mv)
noblesse N(soort,ev,neut)
eindeloos Adj(adv,stell,onverv) Adj(attr,stell,onverv)
huidje N(soort,ev,neut)
diefstallen N(soort,mv,neut)
groeiend V(intrans,teg_dw,onverv)
schrijnende V(intrans,teg_dw,verv_neut)
eenzaam Adj(attr,stell,onverv) Adj(adv,stell,onverv)
doorbreken V(trans,inf)
verbrandt V(trans,ott,3,ev)
verorberen V(trans,inf)
stilte N(soort,ev,neut)
WIE Pron(betr,neut,zelfst)
80 Num(hoofd,bep,attr,onverv) Num(hoofd,bep,zelfst,onverv)
81 Num(hoofd,bep,attr,onverv)
seksualiteit N(soort,ev,neut)
bulderstem N(soort,ev,neut)
82 Num(hoofd,bep,attr,onverv)
Werkgroep N(eigen,ev,neut)
WIJ Pron(per,1,mv,nom)
gebleven V(hulp_of_kopp,verl_dw,onverv)
tranen N(soort,mv,neut)
Allebei Num(hoofd,bep,zelfst,onverv)
som N(soort,ev,neut)
cosmeticahuizen N(soort,mv,neut)
kleuter-diertje N(soort,ev,neut)
Martha N(eigen,ev,neut)
rechterkant N(soort,ev,neut)
boekjes N(soort,mv,neut)
lollige Adj(attr,stell,verv_neut)
Exacte Adj(attr,stell,verv_neut)
stijlcitaten N(soort,mv,neut)
schalks Adj(adv,stell,onverv)
armoe N(soort,ev,neut)
geef V(trans,ott,1,ev) V(trans,imp)
93 Num(hoofd,bep,attr,onverv)
zowel Conj(neven)
95 Num(hoofd,bep,attr,onverv)
bewusteloosheid N(soort,ev,neut)
verwensing N(soort,ev,neut)
gemeenschap N(soort,ev,neut)
geuit V(trans,verl_dw,onverv)
termen N(soort,mv,neut)
Hollandse Adj(attr,stell,verv_neut)
eigener Pron(aanw,gen,attr,w_eigen)
orchideeen N(soort,mv,neut)
geel Adj(attr,stell,onverv) Adj(zelfst,stell,onverv)
99 Num(hoofd,bep,attr,onverv)
hiernamaals N(soort,ev,neut)
geen Pron(onbep,neut,attr)
gekend V(trans,verl_dw,onverv)
onderzoek N(soort,ev,neut)
theologen N(soort,mv,neut)
daarvoor Adv(pron,aanw)
reeks N(soort,ev,neut)
champagne N(soort,ev,neut)
Marsh N(eigen,ev,neut)
geschoffeld V(trans,verl_dw,onverv)
32,95 Num(hoofd,bep,attr,onverv)
daarmee Adv(pron,aanw)
Sproei V(intrans,imp)
opstond V(intrans,ovt,1_of_2_of_3,ev)
herinnerde V(trans,ovt,1_of_2_of_3,ev)
ventje N(soort,ev,neut)
verste Adj(attr,overtr,verv_neut)
geniaal Adj(adv,stell,onverv) Adj(attr,stell,onverv)
mens-mens N(soort,ev,neut)
profiteren V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv)
praktische Adj(attr,stell,verv_neut)
Bomanssaus N(soort,ev,neut)
oorlog N(soort,ev,neut)
Martin N(eigen,ev,neut)
boord N(soort,ev,neut)
half Adj(attr,stell,onverv) Num(hoofd,bep,attr,onverv) Adj(adv,stell,onverv)
onberoerd Adj(attr,stell,onverv)
Marbella N(eigen,ev,neut)
gezeten V(trans,verl_dw,onverv) V(intrans,verl_dw,onverv)
sieraden N(soort,mv,neut)
leeuwen N(soort,mv,neut)
spraken V(intrans,ovt,1_of_2_of_3,mv) V(trans,ovt,1_of_2_of_3,mv)
slootwater N(soort,ev,neut)
Peru N(eigen,ev,neut)
jachtgeweren N(soort,mv,neut)
toekwam V(intrans,ovt,1_of_2_of_3,ev)
viooltjes N(soort,mv,neut)
verbeterd V(intrans,verl_dw,onverv)
gromt V(intrans,ott,3,ev)
gekaapt V(trans,verl_dw,onverv)
werkelijk Adj(adv,stell,onverv) Adj(attr,stell,onverv)
droevig Adj(adv,stell,onverv)
dusdanig Pron(aanw,neut,zelfst)
hals N(soort,ev,neut)
dokken V(intrans,inf)
geplaatst V(trans,verl_dw,onverv)
sprake N(soort,ev,neut) N(soort,ev,dat)
Heuff N(eigen,ev,neut)
fluisterde V(trans,ovt,1_of_2_of_3,ev)
Westduitse Adj(attr,stell,verv_neut)
grond N(soort,ev,neut)
herinneren V(trans,inf)
risico N(soort,ev,neut)
handwerkje N(soort,ev,neut)
Marty N(eigen,ev,neut)
geleerde Adj(zelfst,stell,verv_neut)
omvang N(soort,ev,neut)
Volkomen Adj(adv,stell,onverv)
voortdurende V(intrans,teg_dw,verv_neut)
Ascott N(eigen,ev,neut)
verwondingen N(soort,mv,neut)
directeur N(soort,ev,neut)
vreemd Adj(attr,stell,onverv)
feitelijk Adj(adv,stell,onverv)
artsen N(soort,mv,neut)
respectievelijk Adj(adv,stell,onverv)
bevinden V(refl,ott,1_of_2_of_3,mv)
rondhangende V(intrans,teg_dw,verv_neut)
fixer-leden N(soort,mv,neut)
snelt V(intrans,ott,3,ev)
toneelspelen V(intrans,inf)
Klasen N(eigen,ev,neut)
dienstplichtigen Adj(zelfst,stell,verv_mv)
spiegelzusters N(soort,mv,neut)
hand N(soort,ev,neut)
halve Adj(attr,stell,verv_neut)
klassenmaatschappij N(soort,ev,neut)
vezel N(soort,ev,neut)
zogenaamde Adj(attr,stell,verv_neut)
vandaag Adv(gew,geen_func,stell,onverv)
opperstrateeg N(soort,ev,neut)
groot Adj(attr,stell,onverv)
skiinstructeurs N(soort,mv,neut)
veroordelen V(trans,inf)
smekend V(intrans,teg_dw,onverv)
vandaan Adv(deel_adv)
verleenden V(trans,ovt,1_of_2_of_3,mv)
nestelt V(refl,ott,3,ev)
profit N(eigen,ev,neut)
gelucht V(trans,verl_dw,onverv)
vandaar Adv(gew,aanw)
lachende V(intrans,teg_dw,verv_neut)
onrechte N(soort,ev,dat)
vormen N(soort,mv,neut) V(trans,inf) V(trans,ott,1_of_2_of_3,mv)
Coldwater N(eigen,ev,neut)
sta V(intrans,ott,1,ev) V(hulp,ott,2,ev)
Minder Num(hoofd,onbep,attr,vergr,onverv)
cursus N(soort,ev,neut)
rust N(soort,ev,neut)
garnituur N(soort,ev,neut)
polyesterhars N(soort,ev,neut)
eiland N(soort,ev,neut)
theologie N(soort,ev,neut)
lokt V(trans,ott,3,ev)
Annemiek N(eigen,ev,neut)
gebruik N(soort,ev,neut) V(trans,imp)
dieet N(soort,ev,neut)
geil N(soort,ev,neut)
merkwaardig Adj(attr,stell,onverv)
geboren Adj(attr,stell,onverv)
schoolmeestersbestaan N(soort,ev,neut)
verlopen V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv)
akker N(soort,ev,neut)
opgang N(soort,ev,neut)
regenbui N(soort,ev,neut)
vakken N(soort,mv,neut)
wind-gordels N(soort,mv,neut)
image N(soort,ev,neut)
elektrische Adj(attr,stell,verv_neut)
baanbrekend Adj(attr,stell,onverv)
leren V(trans,inf) Adj(attr,stell,onverv) V(intrans,inf) V(trans,ott,1_of_2_of_3,mv) V(hulp,inf)
krijgen V(trans,inf) V(trans,ott,1_of_2_of_3,mv)
Redding Misc(vreemd)
overgegaan V(trans,verl_dw,onverv)
drinkperiode N(soort,ev,neut)
letterlijke Adj(attr,stell,verv_neut)
barbaren N(soort,mv,neut)
pootjes N(soort,mv,neut)
sneller Adj(adv,vergr,onverv) Adj(attr,vergr,onverv)
prettige Adj(attr,stell,verv_neut)
Vos N(eigen,ev,gen)
gedachte N(soort,ev,neut)
geliefden Adj(zelfst,stell,verv_mv)
beschadigingen N(soort,mv,neut)
zenuwen N(soort,mv,neut)
tinten N(soort,mv,neut)
gerimpelde Adj(attr,stell,verv_neut)
poppen N(soort,mv,neut)
klonk V(intrans,ovt,1_of_2_of_3,ev)
Naika N(eigen,ev,neut)
beroemde Adj(attr,stell,verv_neut)
parafernalia N(soort,mv,neut)
gaven V(trans,ovt,1_of_2_of_3,mv) N(soort,mv,neut) V(refl,ovt,1_of_2_of_3,mv)
expert N(soort,ev,neut)
gerimpelds V(trans,verl_dw,verv_gen)
volwaardige Adj(attr,stell,verv_neut)
inzake Prep(voor)
m.a.v.o. N(soort,ev,neut)
bewijs N(soort,ev,neut) V(trans,ott,1,ev)
naaide V(trans,ovt,1_of_2_of_3,ev)
Tanger N(eigen,ev,neut)
Kevin N(eigen,ev,neut)
fier Adj(adv,stell,onverv)
auteur N(soort,ev,neut)
keukenmeester N(soort,ev,neut)
dertig Num(hoofd,bep,zelfst,onverv) Num(hoofd,bep,attr,onverv)
bestudering N(soort,ev,neut)
afstaan V(trans,inf)
Edith N(eigen,ev,neut)
zenden V(intrans,inf,subst) V(intrans,inf) V(intrans,ott,1_of_2_of_3,mv)
kloof V(intrans,ovt,1_of_2_of_3,ev) N(soort,ev,neut)
gymnastiekoefeningen N(soort,mv,neut)
long N(soort,ev,neut)
zestien Num(hoofd,bep,attr,onverv)
verdere Adj(attr,vergr,verv_neut)
oorspronkelijke Adj(attr,stell,verv_neut)
geld N(soort,ev,neut)
hard Adj(attr,stell,onverv) Adj(adv,stell,onverv)
ontmoetingen N(soort,mv,neut)
hare Pron(bez,3,ev,neut,attr)
opgeklopte V(trans,verl_dw,verv_neut)
Gabin N(eigen,ev,neut)
ingaan V(intrans,inf)
gespietst V(trans,verl_dw,onverv)
opstaan V(intrans,inf)
eikehouten Adj(attr,stell,onverv)
naaien V(trans,ott,1_of_2_of_3,mv)
gangbare Adj(zelfst,stell,verv_neut)
harp N(soort,ev,neut)
onderhoudskosten N(soort,mv,neut)
korte Adj(attr,stell,verv_neut)
hart N(soort,ev,neut)
ruwe Adj(attr,stell,verv_neut)
kaarsen N(soort,mv,neut)
Merci Int
tabak N(soort,ev,neut)
lood N(soort,ev,neut)
Nigeria N(eigen,ev,neut)
toegepast V(trans,verl_dw,onverv)
weerloosheid N(soort,ev,neut)
voetganger N(soort,ev,neut)
brommer N(soort,ev,neut)
A. N(eigen,ev,neut)
versjacherd V(trans,verl_dw,onverv)
Verstond V(trans,ovt,1_of_2_of_3,ev)
grote Adj(attr,stell,verv_neut)
loop N(soort,ev,neut) V(intrans,ott,1,ev) V(hulp,ott,1,ev)
hervinden V(trans,ott,1_of_2_of_3,mv)
klopt V(intrans,ott,3,ev)
brengt V(trans,ott,3,ev)
toenemen V(intrans,ott,1_of_2_of_3,mv) V(intrans,inf,subst)
vreten V(trans,inf) V(intrans,inf)
verkeerd Adj(attr,stell,onverv) Adj(adv,stell,onverv)
huisgenoten N(soort,mv,neut)
mallotige Adj(attr,stell,verv_neut)
thuiskomt V(intrans,ott,3,ev)
graad N(soort,ev,neut)
verlustigen V(refl,inf)
graaf N(soort,ev,neut)
Stube N(soort,ev,neut)
graag Adj(adv,stell,onverv)
gemonteerd V(trans,verl_dw,onverv)
enerzijds Adv(ge
gitextract_o86o2zrq/ ├── .eslintrc.json ├── .gitconfig ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── pull_request_template.md │ └── workflows/ │ ├── codeql-analysis.yml │ ├── linter.yml │ ├── node.js.yml │ └── npm-publish.yml ├── .gitignore ├── .npmignore ├── .nycrc ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE.txt ├── README.md ├── SECURITY.md ├── benchmarks/ │ ├── index.js │ ├── metaphone.js │ ├── sample-id.txt │ ├── soundex.js │ └── stemmer_id.js ├── examples/ │ ├── classification/ │ │ ├── MaxEntAppliedToPOSTagging_spec.js │ │ ├── basic.js │ │ ├── recall.js │ │ ├── store.js │ │ └── try_events.js │ ├── inflection/ │ │ ├── count.js │ │ └── noun.js │ ├── phonetics/ │ │ ├── compare.js │ │ └── tokenize_and_phoneticize.js │ ├── stemming/ │ │ ├── stem_corpus.js │ │ └── stem_word.js │ ├── tfidf/ │ │ ├── array_example.js │ │ ├── multiple_terms.js │ │ └── tfidf_example.js │ └── tokenizer/ │ └── testSentenceTokenizer.js ├── index.js ├── io_spec/ │ ├── MaxEntClassifier_spec.js │ ├── Sample_spec.js │ ├── StorageBackend_spec.js │ ├── bayes_classifier_spec.js │ ├── classifier_spec.js │ ├── logistic_regression_classifier_spec.js │ ├── test_data/ │ │ └── tfidf/ │ │ ├── one │ │ ├── tfidf_document1.txt │ │ ├── tfidf_document2.txt │ │ ├── tfidf_document3.txt │ │ ├── tfidf_document4.txt │ │ └── two │ ├── tfidf_spec.js │ ├── tmp/ │ │ ├── .this_folder_exists.txt │ │ ├── 055ff9e6-bf89-42d0-b44a-4dcc523bf6fc.json │ │ ├── 7cfb947f-0115-4ef6-b21b-d9554d51caf2.json │ │ ├── bf35794b-83e7-4628-8ec2-a0cf451a6fb2.json │ │ └── c2ee3580-26b9-4972-b7f9-e59a933ed021.json │ ├── wordnet_index_spec.js │ ├── wordnet_spec.js │ └── wordnet_test.ts ├── lib/ │ └── natural/ │ ├── analyzers/ │ │ ├── SenType.ts │ │ ├── index.d.ts │ │ ├── index.js │ │ └── sentence_analyzer.js │ ├── brill_pos_tagger/ │ │ ├── data/ │ │ │ ├── Dutch/ │ │ │ │ ├── README.txt │ │ │ │ ├── brill_CONTEXTRULES.jg │ │ │ │ ├── brill_CONTEXTRULES.json │ │ │ │ ├── brill_LEXICON.jg │ │ │ │ └── brill_Lexicon.json │ │ │ └── English/ │ │ │ ├── README.txt │ │ │ ├── lexicon_from_posjs.json │ │ │ ├── tr_from_brill_paper.json │ │ │ ├── tr_from_brill_paper.txt │ │ │ ├── tr_from_posjs.json │ │ │ └── tr_from_posjs.txt │ │ ├── index.d.ts │ │ ├── index.js │ │ └── lib/ │ │ ├── Brill_POS_Tagger.js │ │ ├── Brill_POS_Tester.js │ │ ├── Brill_POS_Trainer.js │ │ ├── Corpus.js │ │ ├── Lexicon.js │ │ ├── Predicate.js │ │ ├── RuleSet.js │ │ ├── RuleTemplate.js │ │ ├── RuleTemplates.js │ │ ├── Sentence.js │ │ ├── TF_Parser.js │ │ ├── TF_Parser.pegjs │ │ └── TransformationRule.js │ ├── classifiers/ │ │ ├── bayes_classifier.js │ │ ├── classifier.js │ │ ├── classifier_train_parallel.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── logistic_regression_classifier.js │ │ └── maxent/ │ │ ├── Classifier.js │ │ ├── Context.js │ │ ├── Distribution.js │ │ ├── Element.js │ │ ├── Feature.js │ │ ├── FeatureSet.js │ │ ├── GISScaler.js │ │ ├── POS/ │ │ │ ├── ME_Corpus.js │ │ │ ├── ME_Sentence.js │ │ │ └── POS_Element.js │ │ ├── Sample.js │ │ └── SimpleExample/ │ │ └── SE_Element.js │ ├── distance/ │ │ ├── dice_coefficient.js │ │ ├── hamming_distance.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── jaro-winkler_distance.js │ │ └── levenshtein_distance.js │ ├── index.d.ts │ ├── index.js │ ├── inflectors/ │ │ ├── count_inflector.js │ │ ├── form_set.js │ │ ├── fr/ │ │ │ ├── count_inflector.js │ │ │ └── noun_inflector.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── ja/ │ │ │ └── noun_inflector.js │ │ ├── noun_inflector.js │ │ ├── present_verb_inflector.js │ │ └── singular_plural_inflector.js │ ├── ngrams/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── ngrams.js │ │ └── ngrams_zh.js │ ├── normalizers/ │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── normalizer.js │ │ ├── normalizer_ja.js │ │ ├── normalizer_no.js │ │ ├── normalizer_sv.js │ │ └── remove_diacritics.js │ ├── phonetics/ │ │ ├── dm_soundex.js │ │ ├── double_metaphone.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── metaphone.js │ │ ├── phonetic.js │ │ └── soundex.js │ ├── sentiment/ │ │ ├── Basque/ │ │ │ └── senticon_eu.json │ │ ├── Catalan/ │ │ │ └── senticon_ca.json │ │ ├── Dutch/ │ │ │ ├── negations_du.json │ │ │ └── pattern-sentiment-nl.json │ │ ├── English/ │ │ │ ├── negations_en.json │ │ │ ├── pattern-sentiment-en.json │ │ │ └── senticon_en.json │ │ ├── French/ │ │ │ └── pattern-sentiment-fr.json │ │ ├── Galician/ │ │ │ └── senticon_gl.json │ │ ├── German/ │ │ │ ├── negations_de.json │ │ │ └── pattern-sentiment-de.json │ │ ├── Italian/ │ │ │ └── pattern-sentiment-it.json │ │ ├── Portuguese/ │ │ │ ├── afinnShortSortedPortuguese.json │ │ │ └── negations_pt.json │ │ ├── SentimentAnalyzer.js │ │ ├── Spanish/ │ │ │ ├── afinnShortSortedSpanish.json │ │ │ ├── negations_es.json │ │ │ └── senticon_es.json │ │ ├── index.d.ts │ │ ├── index.js │ │ └── tools/ │ │ ├── README.md │ │ ├── XmlParser4PatternData.js │ │ └── sentimentXmlParser.js │ ├── spellcheck/ │ │ ├── index.d.ts │ │ ├── index.js │ │ └── spellcheck.js │ ├── stemmers/ │ │ ├── Carry/ │ │ │ ├── index.js │ │ │ ├── stepConfs.js │ │ │ └── utils.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── indonesian/ │ │ │ ├── base_stemmer_id.js │ │ │ ├── data/ │ │ │ │ └── kata-dasar.json │ │ │ ├── prefix_rules.js │ │ │ ├── removal.js │ │ │ ├── stemmer_id.js │ │ │ └── suffix_rules.js │ │ ├── lancaster_rules.js │ │ ├── lancaster_stemmer.js │ │ ├── porter_stemmer.js │ │ ├── porter_stemmer_de.js │ │ ├── porter_stemmer_es.js │ │ ├── porter_stemmer_fa.js │ │ ├── porter_stemmer_fr.js │ │ ├── porter_stemmer_it.js │ │ ├── porter_stemmer_nl.js │ │ ├── porter_stemmer_no.js │ │ ├── porter_stemmer_pt.js │ │ ├── porter_stemmer_ru.js │ │ ├── porter_stemmer_sv.js │ │ ├── porter_stemmer_uk.js │ │ ├── stemmer.js │ │ ├── stemmer_de.js │ │ ├── stemmer_es.js │ │ ├── stemmer_fa.js │ │ ├── stemmer_fr.js │ │ ├── stemmer_it.js │ │ ├── stemmer_ja.js │ │ ├── stemmer_nl.js │ │ ├── stemmer_no.js │ │ ├── stemmer_pl.js │ │ ├── stemmer_pt.js │ │ ├── stemmer_ru.js │ │ ├── stemmer_sv.js │ │ ├── stemmer_uk.js │ │ └── token.js │ ├── tfidf/ │ │ ├── index.d.ts │ │ ├── index.js │ │ └── tfidf.js │ ├── tokenizers/ │ │ ├── aggressive_tokenizer.js │ │ ├── aggressive_tokenizer_de.js │ │ ├── aggressive_tokenizer_es.js │ │ ├── aggressive_tokenizer_fa.js │ │ ├── aggressive_tokenizer_fr.js │ │ ├── aggressive_tokenizer_hi.js │ │ ├── aggressive_tokenizer_id.js │ │ ├── aggressive_tokenizer_it.js │ │ ├── aggressive_tokenizer_nl.js │ │ ├── aggressive_tokenizer_no.js │ │ ├── aggressive_tokenizer_pl.js │ │ ├── aggressive_tokenizer_pt.js │ │ ├── aggressive_tokenizer_ru.js │ │ ├── aggressive_tokenizer_sv.js │ │ ├── aggressive_tokenizer_uk.js │ │ ├── aggressive_tokenizer_vi.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── orthography_matchers.js │ │ ├── regexp_tokenizer.js │ │ ├── sentence_tokenizer.js │ │ ├── sentence_tokenizer_deprecated.js │ │ ├── tokenizer.js │ │ ├── tokenizer_case.js │ │ ├── tokenizer_ja.js │ │ └── treebank_word_tokenizer.js │ ├── transliterators/ │ │ ├── index.d.ts │ │ ├── index.js │ │ └── ja/ │ │ └── index.js │ ├── trie/ │ │ ├── index.d.ts │ │ ├── index.js │ │ └── trie.js │ ├── util/ │ │ ├── abbreviations_en.js │ │ ├── abbreviations_es.js │ │ ├── bag.js │ │ ├── directed_edge.js │ │ ├── edge_weighted_digraph.js │ │ ├── index.d.ts │ │ ├── index.js │ │ ├── longest_path_tree.js │ │ ├── shortest_path_tree.js │ │ ├── stopwords.js │ │ ├── stopwords_es.js │ │ ├── stopwords_fa.js │ │ ├── stopwords_fr.js │ │ ├── stopwords_id.js │ │ ├── stopwords_it.js │ │ ├── stopwords_ja.js │ │ ├── stopwords_nl.js │ │ ├── stopwords_no.js │ │ ├── stopwords_pl.js │ │ ├── stopwords_pt.js │ │ ├── stopwords_ru.js │ │ ├── stopwords_sv.js │ │ ├── stopwords_uk.js │ │ ├── stopwords_zh.js │ │ ├── storage/ │ │ │ ├── File.js │ │ │ ├── Memcached.js │ │ │ ├── MongoDB.js │ │ │ ├── Postgres.js │ │ │ ├── Redis.js │ │ │ ├── StorageBackend.js │ │ │ ├── docker-compose.yml │ │ │ ├── index.d.ts │ │ │ └── index.js │ │ ├── topological.js │ │ └── utils.js │ └── wordnet/ │ ├── data_file.js │ ├── index.d.ts │ ├── index.js │ ├── index_file.js │ ├── wordnet.js │ └── wordnet_file.js ├── package.json ├── rollup.config.mjs ├── spec/ │ ├── MaxEntClassifier_spec.ts │ ├── SentimentAnalyzer_spec.ts │ ├── WordPunctTokenizer_spec.ts │ ├── aggressive_tokenizer_de_spec.ts │ ├── aggressive_tokenizer_es_spec.ts │ ├── aggressive_tokenizer_fr_spec.ts │ ├── aggressive_tokenizer_hi_spec.ts │ ├── aggressive_tokenizer_nl_spec.ts │ ├── aggressive_tokenizer_pt_spec.ts │ ├── aggressive_tokenizer_spec.ts │ ├── aggressive_tokenizer_sv_spec.ts │ ├── aggressive_tokenizer_vi_spec.ts │ ├── bayes_classifier_spec.ts │ ├── brill_pos_tagger_spec.ts │ ├── brill_pos_trainer_spec.ts │ ├── carry_stemmer_fr_spec.ts │ ├── classifier_spec.ts │ ├── count_inflector_fr_spec.ts │ ├── count_inflector_spec.ts │ ├── damerau_levenshtein_spec.ts │ ├── dice_coefficient_spec.ts │ ├── double_metaphone_spec.ts │ ├── esm/ │ │ └── smoke.mjs │ ├── hamming_distance_spec.ts │ ├── jaro-winkler_spec.ts │ ├── lancaster_stemmer_spec.ts │ ├── levenshtein_spec.ts │ ├── logistic_regression_classifier_spec.ts │ ├── longest_path_tree_spec.ts │ ├── metaphone_spec.ts │ ├── ngram_spec.ts │ ├── ngram_zh_spec.ts │ ├── normalizer_ja_spec.ts │ ├── normalizer_no_spec.ts │ ├── normalizer_spec.ts │ ├── noun_inflector_fr_spec.ts │ ├── noun_inflector_ja_spec.ts │ ├── noun_inflector_spec.ts │ ├── orthography_tokenizer_spec.ts │ ├── porter_stemmer_de_spec.ts │ ├── porter_stemmer_es_spec.ts │ ├── porter_stemmer_fr_spec.ts │ ├── porter_stemmer_it_spec.ts │ ├── porter_stemmer_nl_spec.ts │ ├── porter_stemmer_no_spec.ts │ ├── porter_stemmer_pt_spec.ts │ ├── porter_stemmer_ru_spec.ts │ ├── porter_stemmer_spec.ts │ ├── porter_stemmer_sv_spec.ts │ ├── present_verb_inflector_spec.ts │ ├── remove_diacritics_spec.ts │ ├── sentence_analyzer_spec.ts │ ├── sentence_tokenizer_spec.ts │ ├── shortest_path_tree_spec.ts │ ├── soundex_spec.ts │ ├── spellcheck_spec.ts │ ├── stemmer_id_spec.ts │ ├── stemmer_ja_spec.ts │ ├── stemmer_token_spec.ts │ ├── support/ │ │ ├── count_tests.js │ │ └── jasmine.json │ ├── test_data/ │ │ ├── ConvertSnowballDict.js │ │ ├── NYT-20150205-picassos-granddaughter-plans-to-sell-art-worrying-the-market.json │ │ ├── NYT-20150205-picassos-granddaughter-plans_expected_tag_results.json │ │ ├── Volkskrant-20150205-Knot-geldpers-aanzetten-is-paardenmiddel-voor-half-procent-inflatie.json │ │ ├── Wikipedia_EN_FrenchRevolution.json │ │ ├── Wikipedia_EN_InfluenceOfTheFrenchRevolution.json │ │ ├── browntag_nolines_excerpt.json │ │ ├── browntag_nolines_excerpt_maxent.json │ │ ├── dutchStemResults.json │ │ ├── index.document1.txt │ │ ├── snowball_de.json │ │ ├── snowball_es.json │ │ ├── snowball_fr.json │ │ ├── snowball_it.json │ │ ├── snowball_nl.json │ │ ├── snowball_no.json │ │ ├── snowball_pt.json │ │ ├── sv_stemmer_sample.js │ │ ├── tfdif_testcorpus.txt │ │ ├── tfidf_teststopwords.txt │ │ └── wordnet_mini.sql │ ├── tfidf_spec.ts │ ├── tokenizer_case_spec.ts │ ├── tokenizer_ja_spec.ts │ ├── transliterator_ja_spec.ts │ ├── treebank_word_tokenizer_spec.ts │ └── trie_spec.ts └── tsconfig.json
SYMBOL INDEX (872 symbols across 154 files)
FILE: examples/classification/MaxEntAppliedToPOSTagging_spec.js
constant JSON_FLAG (line 42) | const JSON_FLAG = 2
constant DEBUG (line 47) | const DEBUG = false
function applyClassifierToTestCorpus (line 53) | function applyClassifierToTestCorpus (testCorpus, tagger, classifier) {
FILE: examples/phonetics/tokenize_and_phoneticize.js
function findMatch (line 37) | function findMatch (input) {
FILE: io_spec/MaxEntClassifier_spec.js
constant DEBUG (line 39) | const DEBUG = false
FILE: io_spec/Sample_spec.js
constant DEBUG (line 31) | const DEBUG = false
FILE: io_spec/StorageBackend_spec.js
constant STORAGESERVERS (line 25) | const STORAGESERVERS = true
FILE: io_spec/bayes_classifier_spec.js
function setupClassifier (line 30) | function setupClassifier () {
FILE: io_spec/logistic_regression_classifier_spec.js
function setupClassifier (line 28) | function setupClassifier () {
FILE: io_spec/wordnet_spec.js
function expectResults (line 37) | function expectResults (records) {
FILE: lib/natural/analyzers/SenType.ts
type SenType (line 24) | const enum SenType {
FILE: lib/natural/analyzers/index.d.ts
type TaggedWord (line 26) | interface TaggedWord {
type PunctuationMapping (line 35) | type PunctuationMapping = Array<Record<string, string>> | ''
type PunctuationFunction (line 36) | type PunctuationFunction = () => PunctuationMapping
type TaggedSentence (line 38) | interface TaggedSentence {
type CallbackFunction (line 43) | type CallbackFunction = (obj: SentenceAnalyzer) => void
class SentenceAnalyzer (line 45) | class SentenceAnalyzer {
FILE: lib/natural/analyzers/sentence_analyzer.js
class SentenceAnalyzer (line 47) | class SentenceAnalyzer {
method constructor (line 48) | constructor (pos, callbackFunction) {
method part (line 54) | part (callbackFunction) {
method prepositionPhrases (line 96) | prepositionPhrases () {
method subjectToString (line 114) | subjectToString () {
method predicateToString (line 122) | predicateToString () {
method implicitYou (line 130) | implicitYou () {
method toString (line 140) | toString () {
method type (line 145) | type (cbf) {
FILE: lib/natural/brill_pos_tagger/index.d.ts
type RuleTemplatesItem (line 28) | interface RuleTemplatesItem {
type RuleTemplates (line 36) | type RuleTemplates = Record<string, RuleTemplatesItem>
class RuleTemplate (line 39) | class RuleTemplate {
class Predicate (line 44) | class Predicate {
class TransformationRule (line 53) | class TransformationRule {
class RuleSet (line 71) | class RuleSet {
class Lexicon (line 82) | class Lexicon {
class Corpus (line 97) | class Corpus {
type BrillPOSTaggedWord (line 116) | interface BrillPOSTaggedWord {
type BrillPOSTaggedSentence (line 121) | interface BrillPOSTaggedSentence {
type TaggedCorpus (line 125) | interface TaggedCorpus {
class Sentence (line 130) | class Sentence {
class BrillPOSTagger (line 137) | class BrillPOSTagger {
class BrillPOSTester (line 146) | class BrillPOSTester {
class BrillPOSTrainer (line 150) | class BrillPOSTrainer {
type TagResults (line 175) | interface TagResults {
FILE: lib/natural/brill_pos_tagger/lib/Brill_POS_Tagger.js
constant DEBUG (line 23) | const DEBUG = false
class BrillPOSTagger (line 25) | class BrillPOSTagger {
method constructor (line 26) | constructor (lexicon, ruleSet) {
method tag (line 34) | tag (sentence) {
method tagWithLexicon (line 40) | tagWithLexicon (sentence) {
method applyRules (line 55) | applyRules (sentence) {
FILE: lib/natural/brill_pos_tagger/lib/Brill_POS_Tester.js
class BrillPOSTester (line 21) | class BrillPOSTester {
method test (line 22) | test (corpus, tagger) {
FILE: lib/natural/brill_pos_tagger/lib/Brill_POS_Trainer.js
class BrillPOSTrainer (line 35) | class BrillPOSTrainer {
method constructor (line 36) | constructor (ruleScoreThreshold) {
method selectHighRule (line 45) | selectHighRule () {
method mapRuleToSite (line 69) | mapRuleToSite (rule, i, j) {
method mapSiteToRule (line 79) | mapSiteToRule (i, j, rule) {
method associateSiteWithRule (line 89) | associateSiteWithRule (i, j, rule) {
method siteIsAssociatedWithRule (line 94) | siteIsAssociatedWithRule (i, j, rule) {
method getSites (line 106) | getSites (rule) {
method getRules (line 120) | getRules (i, j) {
method disconnectSiteFromRule (line 134) | disconnectSiteFromRule (i, j, rule) {
method scoreRule (line 155) | scoreRule (rule, i, j) {
method generatePositiveRules (line 192) | generatePositiveRules (i, j) {
method scanForPositiveRules (line 232) | scanForPositiveRules () {
method scanForSites (line 250) | scanForSites () {
method neighbourhood (line 280) | neighbourhood (i, j) {
method train (line 308) | train (corpus, templates, lexicon) {
method printRulesWithScores (line 405) | printRulesWithScores () {
FILE: lib/natural/brill_pos_tagger/lib/Corpus.js
constant BROWN (line 23) | const BROWN = 1
constant JSON (line 24) | const JSON = 2
class Corpus (line 29) | class Corpus {
method constructor (line 30) | constructor (data, typeOfCorpus, SentenceClass) {
method parseBrownCorpus (line 55) | parseBrownCorpus (data, SentenceClass) {
method getTags (line 79) | getTags () {
method splitInTrainAndTest (line 86) | splitInTrainAndTest (percentageTrain) {
method analyse (line 104) | analyse () {
method buildLexicon (line 131) | buildLexicon () {
method tag (line 158) | tag (lexicon) {
method nrSentences (line 167) | nrSentences () {
method nrWords (line 171) | nrWords () {
method generateFeatures (line 175) | generateFeatures () {
method prettyPrint (line 184) | prettyPrint () {
FILE: lib/natural/brill_pos_tagger/lib/Lexicon.js
constant DEBUG (line 24) | const DEBUG = false
class Lexicon (line 26) | class Lexicon {
method constructor (line 28) | constructor (language, defaultCategory, defaultCategoryCapitalised, ex...
method parseLexicon (line 51) | parseLexicon (data) {
method tagWordWithDefaults (line 65) | tagWordWithDefaults (word) {
method tagWord (line 76) | tagWord (word) {
method addWord (line 89) | addWord (word, categories) {
method prettyPrint (line 93) | prettyPrint () {
method nrEntries (line 106) | nrEntries () {
method size (line 110) | size () {
method setDefaultCategories (line 114) | setDefaultCategories (category, categoryCapitalised) {
FILE: lib/natural/brill_pos_tagger/lib/Predicate.js
constant DEBUG (line 21) | const DEBUG = false
class Predicate (line 26) | class Predicate {
method constructor (line 27) | constructor (name, parameter1, parameter2) {
method evaluate (line 42) | evaluate (sentence, position) {
FILE: lib/natural/brill_pos_tagger/lib/RuleSet.js
constant DEBUG (line 26) | const DEBUG = false
class RuleSet (line 28) | class RuleSet {
method constructor (line 30) | constructor (language) {
method addRule (line 52) | addRule (rule) {
method removeRule (line 62) | removeRule (rule) {
method getRules (line 68) | getRules () {
method nrRules (line 75) | nrRules () {
method hasRule (line 79) | hasRule (rule) {
method prettyPrint (line 87) | prettyPrint () {
FILE: lib/natural/brill_pos_tagger/lib/RuleTemplate.js
class RuleTemplate (line 19) | class RuleTemplate {
method constructor (line 20) | constructor (templateName, metadata) {
method windowFitsSite (line 25) | windowFitsSite (sentence, i) {
FILE: lib/natural/brill_pos_tagger/lib/RuleTemplates.js
function nextWordIsCap (line 265) | function nextWordIsCap (sentence, i, parameter) {
function nextWordIs (line 273) | function nextWordIs (sentence, i, parameter) {
function nextWordParameterValues (line 279) | function nextWordParameterValues (sentence, i) {
function prevWordIsCap (line 287) | function prevWordIsCap (sentence, i, parameter) {
function currentWordIsCap (line 296) | function currentWordIsCap (sentence, i, parameter) {
function currentWordParameterValues (line 301) | function currentWordParameterValues (sentence, i) {
function currentWordIs (line 305) | function currentWordIs (sentence, i, parameter) {
function isNumeric (line 309) | function isNumeric (num) {
function currentWordIsNumber (line 313) | function currentWordIsNumber (sentence, i, parameter) {
function currentWordIsURL (line 324) | function currentWordIsURL (sentence, i, parameter) {
function currentWordAnd2TagAfterAre (line 335) | function currentWordAnd2TagAfterAre (sentence, i, parameter1, parameter2) {
function twoTagAfterParameterValues (line 347) | function twoTagAfterParameterValues (sentence, i) {
function currentWordAndNextTagAre (line 355) | function currentWordAndNextTagAre (sentence, i, parameter1, parameter2) {
function currentWordAndPrevTagAre (line 366) | function currentWordAndPrevTagAre (sentence, i, parameter1, parameter2) {
function currentWordAnd2TagBeforeAre (line 377) | function currentWordAnd2TagBeforeAre (sentence, i, parameter1, parameter...
function twoTagBeforeParameterValues (line 388) | function twoTagBeforeParameterValues (sentence, i) {
function currentWordAnd2AfterAre (line 396) | function currentWordAnd2AfterAre (sentence, i, parameter1, parameter2) {
function prevWordIs (line 406) | function prevWordIs (sentence, i, parameter) {
function prevWordParameterValues (line 415) | function prevWordParameterValues (sentence, i) {
function prev1Or2WordIs (line 423) | function prev1Or2WordIs (sentence, i, parameter) {
function prev1Or2WordParameterValues (line 435) | function prev1Or2WordParameterValues (sentence, i) {
function currentWordEndsWith (line 448) | function currentWordEndsWith (sentence, i, parameter) {
function currentWordEndsWithParameterValues (line 457) | function currentWordEndsWithParameterValues (sentence, i) {
function rightBigramIs (line 463) | function rightBigramIs (sentence, i, parameter1, parameter2) {
function leftBigramIs (line 472) | function leftBigramIs (sentence, i, parameter1, parameter2) {
function nextBigramIs (line 481) | function nextBigramIs (sentence, i, parameter1, parameter2) {
function twoWordAfterParameterValues (line 493) | function twoWordAfterParameterValues (sentence, i) {
function prevBigramIs (line 501) | function prevBigramIs (sentence, i, parameter1, parameter2) {
function twoWordBeforeParameterValues (line 513) | function twoWordBeforeParameterValues (sentence, i) {
function next1Or2WordIs (line 521) | function next1Or2WordIs (sentence, i, parameter1, parameter2) {
function next1Or2WordParameterValues (line 533) | function next1Or2WordParameterValues (sentence, i) {
function nextTagIs (line 547) | function nextTagIs (sentence, i, parameter) {
function nextTagParameterValues (line 555) | function nextTagParameterValues (sentence, i) {
function next2TagIs (line 563) | function next2TagIs (sentence, i, parameter) {
function next2TagParameterValues (line 571) | function next2TagParameterValues (sentence, i) {
function next1Or2TagIs (line 579) | function next1Or2TagIs (sentence, i, parameter) {
function next1Or2TagIsParameterValues (line 591) | function next1Or2TagIsParameterValues (sentence, i) {
function next1Or2Or3Tag (line 602) | function next1Or2Or3Tag (sentence, i, parameter) {
function next1Or2Or3TagParameterValues (line 610) | function next1Or2Or3TagParameterValues (sentence, i) {
function surroundedByTags (line 618) | function surroundedByTags (sentence, i, parameter1, parameter2) {
function prev1Or2Or3Tag (line 636) | function prev1Or2Or3Tag (sentence, i, parameter) {
function prev1Or2Or3TagParameterValues (line 644) | function prev1Or2Or3TagParameterValues (sentence, i) {
function prev1Or2Tag (line 652) | function prev1Or2Tag (sentence, i, parameter) {
function prev1Or2TagParameterValues (line 664) | function prev1Or2TagParameterValues (sentence, i) {
function prevTagIs (line 675) | function prevTagIs (sentence, i, parameter) {
function prevTagParameterValues (line 683) | function prevTagParameterValues (sentence, i) {
function prev2TagIs (line 699) | function prev2TagIs (sentence, i, parameter) {
function defaultPredicate (line 707) | function defaultPredicate (sentence, i, parameter) {
FILE: lib/natural/brill_pos_tagger/lib/Sentence.js
class Sentence (line 21) | class Sentence {
method constructor (line 22) | constructor (data) {
method addTaggedWord (line 29) | addTaggedWord (token, tag) {
method clone (line 36) | clone () {
FILE: lib/natural/brill_pos_tagger/lib/TF_Parser.js
function peg$subclass (line 10) | function peg$subclass (child, parent) {
function peg$SyntaxError (line 16) | function peg$SyntaxError (message, expected, found, location) {
function hex (line 62) | function hex (ch) {
function literalEscape (line 66) | function literalEscape (s) {
function classEscape (line 78) | function classEscape (s) {
function describeExpectation (line 92) | function describeExpectation (expectation) {
function describeExpected (line 96) | function describeExpected (expected) {
function describeFound (line 130) | function describeFound (found) {
function peg$parse (line 137) | function peg$parse (input, options) {
FILE: lib/natural/brill_pos_tagger/lib/TransformationRule.js
class TransformationRule (line 25) | class TransformationRule {
method constructor (line 26) | constructor (c1, c2, predicate, parameter1, parameter2) {
method key (line 38) | key () {
method apply (line 42) | apply (sentence, position) {
method isApplicableAt (line 57) | isApplicableAt (sentence, taggedSentence, i) {
method prettyPrint (line 68) | prettyPrint () {
method applyAt (line 85) | applyAt (sentence, i) {
method score (line 94) | score () {
FILE: lib/natural/classifiers/bayes_classifier.js
class BayesClassifier (line 28) | class BayesClassifier extends Classifier {
method constructor (line 29) | constructor (stemmer, smoothing) {
method restore (line 37) | static restore (classifier, stemmer) {
method load (line 46) | static load (filename, stemmer, callback) {
method loadFrom (line 56) | static async loadFrom (key, stemmer, storageBackend) {
FILE: lib/natural/classifiers/classifier.js
class Classifier (line 30) | class Classifier extends EventEmitter {
method constructor (line 31) | constructor (classifier, stemmer) {
method addDocument (line 46) | addDocument (text, classification) {
method removeDocument (line 73) | removeDocument (text, classification) {
method textToFeatures (line 100) | textToFeatures (observation) {
method train (line 116) | train () {
method retrain (line 128) | retrain () {
method getClassifications (line 134) | getClassifications (observation) {
method classify (line 138) | classify (observation) {
method restore (line 142) | static restore (classifier, stemmer) {
method save (line 147) | save (filename, callback) {
method load (line 157) | static load (filename, stemmer, callback) {
method saveTo (line 171) | async saveTo (storageBackend) {
method loadFrom (line 175) | static async loadFrom (key, storageBackend) {
method setOptions (line 181) | setOptions (options) {
FILE: lib/natural/classifiers/classifier_train_parallel.js
function checkThreadSupport (line 12) | function checkThreadSupport () {
function docsToFeatures (line 18) | function docsToFeatures (docs) {
function docsToObs (line 38) | function docsToObs (docs, lastAdded, stemmer, keepStops) {
function emitEvents (line 53) | function emitEvents (self, docFeatures, totalDocs) {
function trainParallel (line 65) | function trainParallel (numThreads, callback) {
function trainParallelBatches (line 144) | function trainParallelBatches (options) {
function retrainParallel (line 268) | function retrainParallel (numThreads, callback) {
FILE: lib/natural/classifiers/index.d.ts
type ApparatusClassification (line 18) | interface ApparatusClassification {
type ApparatusObservation (line 24) | type ApparatusObservation = number[] | Record<string, number | string | ...
class ApparatusClassifier (line 26) | class ApparatusClassifier {
class ApparatusBayesClassifier (line 35) | class ApparatusBayesClassifier extends ApparatusClassifier {
class ApparatusLogisticRegressionClassifier (line 49) | class ApparatusLogisticRegressionClassifier extends ApparatusClassifier {
type ClassifierDoc (line 66) | interface ClassifierDoc {
type ClassifierOptions (line 71) | interface ClassifierOptions {
type ClassifierCallback (line 75) | type ClassifierCallback = (err: NodeJS.ErrnoException | null, classifier...
type ParallelTrainerCallback (line 76) | type ParallelTrainerCallback = (err: NodeJS.ErrnoException | null) => void
class ClassifierBase (line 78) | class ClassifierBase extends events.EventEmitter {
type BayesClassifierCallback (line 105) | type BayesClassifierCallback = (err: NodeJS.ErrnoException | null, class...
class BayesClassifier (line 107) | class BayesClassifier extends ClassifierBase {
type LogisticRegressionClassifierCallback (line 117) | type LogisticRegressionClassifierCallback = (err: NodeJS.ErrnoException ...
class LogisticRegressionClassifier (line 119) | class LogisticRegressionClassifier extends ClassifierBase {
type MaxEntClassifierCallback (line 127) | type MaxEntClassifierCallback = (err: NodeJS.ErrnoException | null, clas...
class MaxEntClassifier (line 129) | class MaxEntClassifier {
class Distribution (line 145) | class Distribution {
type FeatureFunction (line 165) | type FeatureFunction = (x: Element) => number
class Feature (line 167) | class Feature {
class FeatureSet (line 179) | class FeatureSet {
type SampleCallback (line 190) | type SampleCallback = (err: NodeJS.ErrnoException | null, sample?: Sampl...
class Sample (line 192) | class Sample {
class Context (line 209) | class Context {
class Element (line 216) | class Element {
class SEElement (line 225) | class SEElement extends Element {
class POSElement (line 230) | class POSElement extends Element {
class GISScaler (line 235) | class GISScaler {
class MESentence (line 245) | class MESentence {
class MECorpus (line 250) | class MECorpus {
FILE: lib/natural/classifiers/logistic_regression_classifier.js
class LogisticRegressionClassifier (line 28) | class LogisticRegressionClassifier extends Classifier {
method constructor (line 29) | constructor (stemmer) {
method restore (line 34) | static restore (classifier, stemmer) {
method load (line 44) | static load (filename, stemmer, callback) {
method loadFrom (line 54) | static async loadFrom (key, stemmer, storageBackend) {
method train (line 59) | train () {
FILE: lib/natural/classifiers/maxent/Classifier.js
constant DEBUG (line 35) | const DEBUG = false
class Classifier (line 37) | class Classifier {
method constructor (line 38) | constructor (features, sample) {
method load (line 56) | load (filename, ElementClass, callback) {
method save (line 77) | save (filename, callback) {
method addElement (line 88) | addElement (x) {
method addDocument (line 92) | addDocument (context, classification, ElementClass) {
method train (line 96) | train (maxIterations, minImprovement) {
method getClassifications (line 101) | getClassifications (b) {
method classify (line 114) | classify (b) {
FILE: lib/natural/classifiers/maxent/Context.js
class Context (line 28) | class Context {
method constructor (line 29) | constructor (data) {
method toString (line 34) | toString () {
FILE: lib/natural/classifiers/maxent/Distribution.js
class Distribution (line 28) | class Distribution {
method constructor (line 29) | constructor (alpha, featureSet, sample) {
method toString (line 36) | toString () {
method weight (line 40) | weight (x) {
method calculateAPriori (line 50) | calculateAPriori (x) {
method prepareWeights (line 58) | prepareWeights () {
method calculateAPosteriori (line 70) | calculateAPosteriori (x) {
method aPosterioriNormalisation (line 80) | aPosterioriNormalisation (b) {
method prepareAPosterioris (line 92) | prepareAPosterioris () {
method prepare (line 108) | prepare () {
method KullbackLieblerDistance (line 115) | KullbackLieblerDistance () {
method logLikelihood (line 124) | logLikelihood () {
method entropy (line 133) | entropy () {
method checkSum (line 143) | checkSum () {
FILE: lib/natural/classifiers/maxent/Element.js
class Element (line 26) | class Element {
method constructor (line 28) | constructor (a, b) {
method toString (line 33) | toString () {
FILE: lib/natural/classifiers/maxent/Feature.js
class Feature (line 29) | class Feature {
method constructor (line 30) | constructor (f, name, parameters) {
method apply (line 42) | apply (x) {
method expectationApprox (line 46) | expectationApprox (p, sample) {
method expectation (line 68) | expectation (p, A, B) {
method observedExpectation (line 81) | observedExpectation (sample) {
FILE: lib/natural/classifiers/maxent/FeatureSet.js
class FeatureSet (line 26) | class FeatureSet {
method constructor (line 27) | constructor () {
method addFeature (line 33) | addFeature (feature) {
method featureExists (line 44) | featureExists (feature) {
method getFeatures (line 56) | getFeatures () {
method size (line 60) | size () {
method prettyPrint (line 64) | prettyPrint () {
FILE: lib/natural/classifiers/maxent/GISScaler.js
class GISScaler (line 29) | class GISScaler {
method constructor (line 31) | constructor (featureSet, sample) {
method calculateMaxSumOfFeatures (line 37) | calculateMaxSumOfFeatures () {
method addCorrectionFeature (line 68) | addCorrectionFeature () {
method run (line 92) | run (maxIterations, minImprovement) {
FILE: lib/natural/classifiers/maxent/POS/ME_Corpus.js
class MECorpus (line 29) | class MECorpus extends Corpus {
method generateSample (line 30) | generateSample () {
method splitInTrainAndTest (line 41) | splitInTrainAndTest (percentageTrain) {
FILE: lib/natural/classifiers/maxent/POS/ME_Sentence.js
class MESentence (line 30) | class MESentence extends Sentence {
method generateSampleElements (line 31) | generateSampleElements (sample) {
FILE: lib/natural/classifiers/maxent/POS/POS_Element.js
class POSElement (line 29) | class POSElement extends Element {
method generateFeatures (line 30) | generateFeatures (featureSet) {
FILE: lib/natural/classifiers/maxent/Sample.js
class Sample (line 30) | class Sample {
method constructor (line 31) | constructor (elements) {
method analyse (line 44) | analyse () {
method addElement (line 61) | addElement (x) {
method observedProbabilityOfContext (line 78) | observedProbabilityOfContext (context) {
method observedProbability (line 86) | observedProbability (x) {
method size (line 94) | size () {
method getClasses (line 98) | getClasses () {
method generateFeatures (line 102) | generateFeatures (featureSet) {
method save (line 108) | save (filename, callback) {
method load (line 121) | load (filename, ElementClass, callback) {
FILE: lib/natural/classifiers/maxent/SimpleExample/SE_Element.js
class SEElement (line 29) | class SEElement extends Element {
method generateFeatures (line 30) | generateFeatures (featureSet) {
FILE: lib/natural/distance/dice_coefficient.js
function getBigrams (line 25) | function getBigrams (str) {
function intersect (line 40) | function intersect (set1, set2) {
function sanitize (line 51) | function sanitize (str) {
function diceCoefficient (line 57) | function diceCoefficient (str1, str2) {
FILE: lib/natural/distance/hamming_distance.js
function HammingDistance (line 30) | function HammingDistance (s1, s2, ignoreCase) {
FILE: lib/natural/distance/index.d.ts
type JaroWinklerOptions (line 26) | interface JaroWinklerOptions {
type DamerauLevenshteinDistanceOptions (line 34) | interface DamerauLevenshteinDistanceOptions {
type SubstringDistanceResult (line 47) | interface SubstringDistanceResult {
FILE: lib/natural/distance/jaro-winkler_distance.js
function distance (line 31) | function distance (s1, s2) {
function JaroWinklerDistance (line 105) | function JaroWinklerDistance (s1, s2, options = {}) {
FILE: lib/natural/distance/levenshtein_distance.js
function _getMatchStart (line 39) | function _getMatchStart (distanceMatrix, matchEnd, sourceLength) {
function getMinCostSubstring (line 58) | function getMinCostSubstring (distanceMatrix, source, target) {
function DamerauLevenshteinDistance (line 94) | function DamerauLevenshteinDistance (source, target, options) {
function DamerauLevenshteinDistanceSearch (line 103) | function DamerauLevenshteinDistanceSearch (source, target, options) {
function LevenshteinDistanceSearch (line 112) | function LevenshteinDistanceSearch (source, target, options) {
function LevenshteinDistance (line 117) | function LevenshteinDistance (source, target, options) {
function levenshteinDistance (line 122) | function levenshteinDistance (source, target, options) {
FILE: lib/natural/index.js
function buildExportMap (line 25) | function buildExportMap (modules) {
FILE: lib/natural/inflectors/count_inflector.js
class CountInflector (line 25) | class CountInflector {
method nthForm (line 26) | nthForm (i) {
method nth (line 43) | nth (i) {
FILE: lib/natural/inflectors/fr/count_inflector.js
class CountInflectorFr (line 41) | class CountInflectorFr {
method nth (line 46) | nth (i) {
method nthForm (line 54) | nthForm (i) {
FILE: lib/natural/inflectors/fr/noun_inflector.js
class NounInflector (line 36) | class NounInflector extends SingularPluralInflector {
method constructor (line 37) | constructor () {
FILE: lib/natural/inflectors/index.d.ts
class SingularPluralInflector (line 23) | class SingularPluralInflector {
class NounInflector (line 30) | class NounInflector extends SingularPluralInflector {
class NounInflectorFr (line 35) | class NounInflectorFr extends NounInflector {}
class NounInflectorJa (line 36) | class NounInflectorJa extends NounInflector {}
class CountInflector (line 38) | class CountInflector {
class CountInflectorFr (line 42) | class CountInflectorFr extends CountInflector {}
class PresentVerbInflector (line 44) | class PresentVerbInflector {
FILE: lib/natural/inflectors/ja/noun_inflector.js
class NounInflector (line 45) | class NounInflector extends SingularPluralInflector {
method constructor (line 46) | constructor () {
FILE: lib/natural/inflectors/noun_inflector.js
class NounInflector (line 28) | class NounInflector extends SingularPluralInflector {
method constructor (line 29) | constructor () {
FILE: lib/natural/inflectors/present_verb_inflector.js
class VerbInflector (line 26) | class VerbInflector extends SingularPluralInflector {
method constructor (line 27) | constructor () {
FILE: lib/natural/inflectors/singular_plural_inflector.js
class TenseInflector (line 35) | class TenseInflector {
method addSingular (line 36) | addSingular (pattern, replacement) {
method addPlural (line 40) | addPlural (pattern, replacement) {
method ize (line 44) | ize (token, formSet, customForms) {
method izeAbiguous (line 51) | izeAbiguous (token) {
method pluralize (line 57) | pluralize (token) {
method singularize (line 61) | singularize (token) {
method restoreCase (line 65) | restoreCase (token) {
method izeRegulars (line 77) | izeRegulars (token, formSet) {
method addForm (line 87) | addForm (singularTable, pluralTable, singular, plural) {
method addIrregular (line 94) | addIrregular (singular, plural) {
method izeRegExps (line 98) | izeRegExps (token, forms) {
FILE: lib/natural/ngrams/index.d.ts
type NGramsStats (line 27) | interface NGramsStats {
type NGramsFunctions (line 34) | interface NGramsFunctions {
FILE: lib/natural/ngrams/ngrams.js
function arrayToKey (line 53) | function arrayToKey (arr) {
function countNgrams (line 63) | function countNgrams (ngram) {
FILE: lib/natural/normalizers/index.d.ts
class Converters (line 32) | class Converters {
type FixCompositeSymbolsTable (line 51) | type FixCompositeSymbolsTable = Record<string, string>
FILE: lib/natural/normalizers/normalizer_ja.js
class Converters (line 525) | class Converters {
method alphabetFH (line 526) | alphabetFH (str) {
method numbersFH (line 530) | numbersFH (str) {
method symbolFH (line 534) | symbolFH (str) {
method purePunctuationFH (line 538) | purePunctuationFH (str) {
method punctuationFH (line 542) | punctuationFH (str) {
method katakanaFH (line 546) | katakanaFH (str) {
method fixFullwidthKana (line 550) | static fixFullwidthKana (str) {
method normalize (line 554) | static normalize (str) {
method alphabetHF (line 558) | alphabetHF (str) {
method numbersHF (line 562) | numbersHF (str) {
method symbolHF (line 566) | symbolHF (str) {
method purePunctuationHF (line 570) | purePunctuationHF (str) {
method punctuationHF (line 574) | punctuationHF (str) {
method katakanaHF (line 578) | katakanaHF (str) {
method fixCompositeSymbols (line 582) | static fixCompositeSymbols (str) {
method hiraganaToKatakana (line 594) | hiraganaToKatakana (str) {
method katakanaToHiragana (line 615) | katakanaToHiragana (str) {
FILE: lib/natural/phonetics/dm_soundex.js
class SoundExDM (line 200) | class SoundExDM extends Phonetic {
method process (line 201) | process (word, codeLength) {
method findRules (line 231) | findRules (str) {
method normalizeLength (line 255) | normalizeLength (token, length) {
FILE: lib/natural/phonetics/double_metaphone.js
class DoubleMetaphone (line 27) | class DoubleMetaphone extends Phonetic {
method isVowel (line 28) | isVowel (c) {
method process (line 32) | process (token, maxLength) {
method compare (line 489) | compare (stringA, stringB) {
FILE: lib/natural/phonetics/index.d.ts
class Phonetic (line 23) | class Phonetic<T> {
class Metaphone (line 28) | class Metaphone extends Phonetic<string> {
class SoundEx (line 53) | class SoundEx extends Phonetic<string> {
class DoubleMetaphone (line 66) | class DoubleMetaphone extends Phonetic<string[]> {
class SoundExDM (line 71) | class SoundExDM extends Phonetic<string> {
FILE: lib/natural/phonetics/metaphone.js
class Metaphone (line 27) | class Metaphone extends Phonetic {
method dedup (line 28) | dedup (token) {
method dropInitialLetters (line 32) | dropInitialLetters (token) {
method dropBafterMAtEnd (line 38) | dropBafterMAtEnd (token) {
method cTransform (line 42) | cTransform (token) {
method dTransform (line 52) | dTransform (token) {
method dropG (line 59) | dropG (token) {
method transformG (line 66) | transformG (token) {
method dropH (line 75) | dropH (token) {
method transformCK (line 79) | transformCK (token) {
method transformPH (line 83) | transformPH (token) {
method transformQ (line 87) | transformQ (token) {
method transformS (line 91) | transformS (token) {
method transformT (line 95) | transformT (token) {
method dropT (line 102) | dropT (token) {
method transformV (line 106) | transformV (token) {
method transformWH (line 110) | transformWH (token) {
method dropW (line 114) | dropW (token) {
method transformX (line 118) | transformX (token) {
method dropY (line 124) | dropY (token) {
method transformZ (line 128) | transformZ (token) {
method dropVowels (line 132) | dropVowels (token) {
method process (line 136) | process (token, maxLength) {
FILE: lib/natural/phonetics/phonetic.js
class Phonetic (line 29) | class Phonetic {
method compare (line 30) | compare (stringA, stringB) {
method tokenizeAndPhoneticize (line 34) | tokenizeAndPhoneticize (str, phoneticsProcessor, keepStops) {
FILE: lib/natural/phonetics/soundex.js
class SoundEx (line 27) | class SoundEx extends Phonetic {
method process (line 28) | process (token, maxLength) {
method transformLipps (line 36) | transformLipps (token) {
method transformThroats (line 40) | transformThroats (token) {
method transformToungue (line 44) | transformToungue (token) {
method transformL (line 48) | transformL (token) {
method transformHum (line 52) | transformHum (token) {
method transformR (line 56) | transformR (token) {
method condense (line 60) | condense (token) {
method padRight0 (line 64) | padRight0 (token) {
method transform (line 68) | transform (token) {
FILE: lib/natural/sentiment/SentimentAnalyzer.js
constant DEBUG (line 25) | const DEBUG = false
class SentimentAnalyzer (line 84) | class SentimentAnalyzer {
method constructor (line 85) | constructor (language, stemmer, type) {
method getSentiment (line 132) | getSentiment (words) {
FILE: lib/natural/sentiment/index.d.ts
type AfinnLanguageType (line 28) | type AfinnLanguageType = 'afinn'
type AfinnLanguage (line 29) | type AfinnLanguage = 'English' | 'Spanish' | 'Portuguese'
type SenticonLanguageType (line 31) | type SenticonLanguageType = 'senticon'
type SenticonLanguage (line 32) | type SenticonLanguage = 'Spanish' | 'English' | 'Galician' | 'Catalan' |...
type PatternLanguageType (line 34) | type PatternLanguageType = 'pattern'
type PatternLanguage (line 35) | type PatternLanguage = 'Dutch' | 'Italian' | 'English' | 'French' | 'Ger...
class SentimentAnalyzer (line 37) | class SentimentAnalyzer {
FILE: lib/natural/spellcheck/index.d.ts
class Spellcheck (line 26) | class Spellcheck {
FILE: lib/natural/spellcheck/spellcheck.js
class Spellcheck (line 30) | class Spellcheck {
method constructor (line 31) | constructor (wordlist) {
method isCorrect (line 43) | isCorrect (word) {
method getCorrections (line 50) | getCorrections (word, maxDistance) {
method edits (line 73) | edits (word) {
method editsWithMaxDistance (line 90) | editsWithMaxDistance (word, distance) {
method editsWithMaxDistanceHelper (line 94) | editsWithMaxDistanceHelper (distanceCounter, distance2edits) {
FILE: lib/natural/stemmers/Carry/index.js
function NodeCarry (line 91) | function NodeCarry (userConf = defaultConf) {
FILE: lib/natural/stemmers/index.d.ts
type RegionsType (line 23) | interface RegionsType {
type Stemmer (line 29) | interface Stemmer {
type TokenCallback (line 71) | type TokenCallback = (...args: number[]) => number[] | number
class Token (line 73) | class Token {
FILE: lib/natural/stemmers/indonesian/prefix_rules.js
function loadDictionary (line 31) | function loadDictionary () {
function find (line 37) | function find (word) {
function PrefixRules (line 41) | function PrefixRules () {
FILE: lib/natural/stemmers/indonesian/removal.js
function Removal (line 26) | function Removal (originalWord, result, removedPart, affixType) {
FILE: lib/natural/stemmers/indonesian/stemmer_id.js
function stemPluralWord (line 62) | function stemPluralWord (pluralWord) {
function stemSingularWord (line 94) | function stemSingularWord (word) {
function isPlural (line 113) | function isPlural (token) {
function find (line 122) | function find (word) {
function loadDictionary (line 126) | function loadDictionary () {
function stemmingProcess (line 132) | function stemmingProcess () {
function removeSuffixes (line 167) | function removeSuffixes () {
function removePrefixes (line 182) | function removePrefixes () {
function checkPrefixRules (line 191) | function checkPrefixRules () {
function loopRestorePrefixes (line 213) | function loopRestorePrefixes () {
function isSuffixRemovals (line 249) | function isSuffixRemovals (removal) {
function restorePrefix (line 257) | function restorePrefix () {
function precedenceAdjustmentSpecification (line 273) | function precedenceAdjustmentSpecification (word) {
FILE: lib/natural/stemmers/indonesian/suffix_rules.js
function SuffixRules (line 28) | function SuffixRules () {
FILE: lib/natural/stemmers/lancaster_stemmer.js
function acceptable (line 28) | function acceptable (candidate) {
function applyRuleSection (line 33) | function applyRuleSection (token, intact) {
FILE: lib/natural/stemmers/porter_stemmer.js
function categorizeGroups (line 29) | function categorizeGroups (token) {
function categorizeChars (line 34) | function categorizeChars (token) {
function measure (line 40) | function measure (token) {
function endsWithDoublCons (line 47) | function endsWithDoublCons (token) {
function attemptReplace (line 54) | function attemptReplace (token, pattern, replacement, callback) {
function attemptReplacePatterns (line 64) | function attemptReplacePatterns (token, replacements, measureThreshold) {
function replacePatterns (line 78) | function replacePatterns (token, replacements, measureThreshold) {
function replaceRegex (line 83) | function replaceRegex (token, regex, includeParts, minimumMeasure) {
function step1a (line 103) | function step1a (token) {
function step1b (line 116) | function step1b (token) {
function step1c (line 152) | function step1c (token) {
function step2 (line 163) | function step2 (token) {
function step3 (line 174) | function step3 (token) {
function step4 (line 180) | function step4 (token) {
function step5a (line 187) | function step5a (token) {
function step5b (line 198) | function step5b (token) {
FILE: lib/natural/stemmers/porter_stemmer_de.js
function stemm (line 24) | function stemm (word, options = {}) {
FILE: lib/natural/stemmers/porter_stemmer_es.js
class PorterStemmer (line 28) | class PorterStemmer extends Stemmer {
method isVowel (line 29) | isVowel (c) {
method nextVowelPosition (line 35) | nextVowelPosition (word, start = 0) {
method nextConsonantPosition (line 47) | nextConsonantPosition (word, start = 0) {
method endsIn (line 59) | endsIn (word, suffix) {
method endsInArr (line 67) | endsInArr (word, suffixes) {
method removeAccent (line 85) | removeAccent (word) {
method stem (line 96) | stem (word) {
FILE: lib/natural/stemmers/porter_stemmer_fr.js
function stem (line 48) | function stem (token) {
function regions (line 264) | function regions (token) {
function prelude (line 314) | function prelude (token) {
function endsinArr (line 348) | function endsinArr (token, suffixes) {
function isVowel (line 357) | function isVowel (letter) {
function endsin (line 362) | function endsin (token, suffix) {
FILE: lib/natural/stemmers/porter_stemmer_it.js
function isVowel (line 30) | function isVowel (letter) {
function getNextVowelPos (line 35) | function getNextVowelPos (token, start) {
function getNextConsonantPos (line 46) | function getNextConsonantPos (token, start) {
function endsin (line 52) | function endsin (token, suffix) {
function endsinArr (line 57) | function endsinArr (token, suffixes) {
function replaceAcute (line 64) | function replaceAcute (token) {
function vowelMarking (line 73) | function vowelMarking (token) {
FILE: lib/natural/stemmers/porter_stemmer_nl.js
constant DEBUG (line 32) | const DEBUG = false
function isVowel (line 35) | function isVowel (x) {
function endsinArr (line 40) | function endsinArr (str, suffixes) {
function endsin (line 54) | function endsin (str, suffix) {
function removeSuffix (line 60) | function removeSuffix (str, len) {
function undoubleEnding (line 65) | function undoubleEnding (str) {
class PorterStemmer (line 73) | class PorterStemmer extends Stemmer {
method replaceAccentedCharacters (line 74) | replaceAccentedCharacters (word) {
method handleYI (line 98) | handleYI (word) {
method markRegions (line 118) | markRegions (token) {
method prelude (line 162) | prelude (word) {
method step1b (line 175) | step1b (word, suffixes) {
method step1 (line 197) | step1 (word) {
method step2 (line 231) | step2 (word) {
method step3a (line 250) | step3a (word) {
method step3b (line 265) | step3b (word) {
method step4 (line 315) | step4 (word) {
method postlude (line 329) | postlude (word) {
method stem (line 333) | stem (word) {
FILE: lib/natural/stemmers/porter_stemmer_no.js
function getR1 (line 28) | function getR1 (token) {
function step1 (line 46) | function step1 (token) {
function step1a (line 61) | function step1a (token) {
function step1b (line 78) | function step1b (token) {
function step1c (line 97) | function step1c (token) {
function step2 (line 112) | function step2 (token) {
function step3 (line 127) | function step3 (token) {
FILE: lib/natural/stemmers/porter_stemmer_pt.js
function prelude (line 83) | function prelude (token) {
function standardSuffix (line 97) | function standardSuffix (token) {
function verbSuffix (line 153) | function verbSuffix (token) {
function iPrecededByCSuffix (line 189) | function iPrecededByCSuffix (token) {
function residualSuffix (line 205) | function residualSuffix (token) {
function residualForm (line 219) | function residualForm (token) {
function postlude (line 247) | function postlude (token) {
FILE: lib/natural/stemmers/porter_stemmer_ru.js
function attemptReplacePatterns (line 30) | function attemptReplacePatterns (token, patterns) {
function perfectiveGerund (line 43) | function perfectiveGerund (token) {
function adjectival (line 51) | function adjectival (token) {
function adjective (line 60) | function adjective (token) {
function participle (line 67) | function participle (token) {
function reflexive (line 75) | function reflexive (token) {
function verb (line 82) | function verb (token) {
function noun (line 90) | function noun (token) {
function superlative (line 97) | function superlative (token) {
function derivational (line 104) | function derivational (token) {
FILE: lib/natural/stemmers/porter_stemmer_sv.js
function getRegions (line 28) | function getRegions (str) {
function step1a (line 43) | function step1a (str, regions = getRegions(str)) {
function step1b (line 54) | function step1b (str, regions = getRegions(str)) {
function step1 (line 62) | function step1 (str) {
function step2 (line 70) | function step2 (str, regions = getRegions(str)) {
function step3 (line 78) | function step3 (str, regions = getRegions(str)) {
function stem (line 92) | function stem (_str) {
FILE: lib/natural/stemmers/porter_stemmer_uk.js
function attemptReplacePatterns (line 8) | function attemptReplacePatterns (token, patterns) {
function perfectiveGerund (line 21) | function perfectiveGerund (token) {
function adjectival (line 29) | function adjectival (token) {
function adjective (line 38) | function adjective (token) {
function participle (line 45) | function participle (token) { // edit
function reflexive (line 52) | function reflexive (token) {
function verb (line 59) | function verb (token) {
function noun (line 66) | function noun (token) {
function superlative (line 73) | function superlative (token) {
function derivational (line 80) | function derivational (token) {
FILE: lib/natural/stemmers/stemmer_de.js
class Stemmer (line 30) | class Stemmer {
method stem (line 31) | stem (token) {
method tokenizeAndStem (line 35) | tokenizeAndStem (text, keepStops) {
FILE: lib/natural/stemmers/stemmer_es.js
class Stemmer (line 28) | class Stemmer {
method stem (line 29) | stem (token) {
method tokenizeAndStem (line 33) | tokenizeAndStem (text, keepStops) {
FILE: lib/natural/stemmers/stemmer_nl.js
class Stemmer (line 28) | class Stemmer {
method stem (line 29) | stem (token) {
method tokenizeAndStem (line 33) | tokenizeAndStem (text, keepStops) {
FILE: lib/natural/stemmers/token.js
function Token (line 30) | function Token (string) {
FILE: lib/natural/tfidf/index.d.ts
type TfIdfCallback (line 28) | type TfIdfCallback = (i: number, measure: number, key?: string | Record<...
type TfIdfTerm (line 30) | interface TfIdfTerm {
type TfIdfDocument (line 37) | type TfIdfDocument = Record<string, number>
class TfIdf (line 39) | class TfIdf {
FILE: lib/natural/tfidf/tfidf.js
function buildDocument (line 31) | function buildDocument (text, key) {
function documentHasTerm (line 54) | function documentHasTerm (term, document) {
function isEncoding (line 59) | function isEncoding (encoding) {
class TfIdf (line 78) | class TfIdf {
method constructor (line 79) | constructor (deserialized) {
method tf (line 88) | static tf (term, document) {
method idf (line 94) | idf (term, force) {
method addDocument (line 117) | addDocument (document, key, restoreCache) {
method removeDocument (line 138) | removeDocument (key) {
method addFileSync (line 156) | addFileSync (path, encoding, key, restoreCache) {
method tfidf (line 176) | tfidf (terms, d) {
method listTerms (line 190) | listTerms (d) {
method tfidfs (line 209) | tfidfs (terms, callback) {
method setTokenizer (line 222) | setTokenizer (t) {
method setStopwords (line 228) | setStopwords (customStopwords) {
FILE: lib/natural/tokenizers/aggressive_tokenizer.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 28) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_de.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 28) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_es.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 28) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_fa.js
class AggressiveTokenizer (line 28) | class AggressiveTokenizer extends Tokenizer {
method clearEmptyString (line 29) | clearEmptyString (array) {
method clearText (line 35) | clearText (text) {
method tokenize (line 39) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_fr.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 28) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_hi.js
class AggressiveTokenizer (line 40) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 41) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_id.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method normalizeText (line 30) | normalizeText (text) {
method tokenize (line 35) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_it.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 28) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_nl.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 28) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_no.js
class AggressiveTokenizer (line 28) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 29) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_pl.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method withoutEmpty (line 28) | withoutEmpty (array) {
method clearText (line 32) | clearText (text) {
method tokenize (line 36) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_pt.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method withoutEmpty (line 28) | withoutEmpty (array) {
method tokenize (line 32) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_ru.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method withoutEmpty (line 28) | withoutEmpty (array) {
method clearText (line 32) | clearText (text) {
method tokenize (line 36) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_sv.js
class AggressiveTokenizer (line 28) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 29) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_uk.js
class AggressiveTokenizer (line 28) | class AggressiveTokenizer extends Tokenizer {
method withoutEmpty (line 29) | withoutEmpty (array) {
method clearText (line 33) | clearText (text) {
method tokenize (line 37) | tokenize (text) {
FILE: lib/natural/tokenizers/aggressive_tokenizer_vi.js
class AggressiveTokenizer (line 27) | class AggressiveTokenizer extends Tokenizer {
method tokenize (line 29) | tokenize (text) {
FILE: lib/natural/tokenizers/index.d.ts
class Tokenizer (line 23) | class Tokenizer {
class AggressiveTokenizerNl (line 27) | class AggressiveTokenizerNl extends Tokenizer {
class AggressiveTokenizerFa (line 31) | class AggressiveTokenizerFa extends Tokenizer {
class AggressiveTokenizerFr (line 37) | class AggressiveTokenizerFr extends Tokenizer {
class AggressiveTokenizerDe (line 41) | class AggressiveTokenizerDe extends Tokenizer {
class AggressiveTokenizerRu (line 45) | class AggressiveTokenizerRu extends Tokenizer {
class AggressiveTokenizerEs (line 51) | class AggressiveTokenizerEs extends Tokenizer {
class AggressiveTokenizerIt (line 55) | class AggressiveTokenizerIt extends Tokenizer {
class AggressiveTokenizerPl (line 59) | class AggressiveTokenizerPl extends Tokenizer {
class AggressiveTokenizerPt (line 65) | class AggressiveTokenizerPt extends Tokenizer {
class AggressiveTokenizerNo (line 70) | class AggressiveTokenizerNo extends Tokenizer {
class AggressiveTokenizerSv (line 74) | class AggressiveTokenizerSv extends Tokenizer {
class AggressiveTokenizerVi (line 78) | class AggressiveTokenizerVi extends Tokenizer {
class AggressiveTokenizerId (line 82) | class AggressiveTokenizerId extends Tokenizer {
class AggressiveTokenizerHi (line 86) | class AggressiveTokenizerHi extends Tokenizer {
class AggressiveTokenizerUk (line 90) | class AggressiveTokenizerUk extends Tokenizer {
class AggressiveTokenizer (line 94) | class AggressiveTokenizer extends Tokenizer {
class CaseTokenizer (line 98) | class CaseTokenizer extends Tokenizer {
type RegexTokenizerOptions (line 102) | interface RegexTokenizerOptions {
class RegexpTokenizer (line 108) | class RegexpTokenizer extends Tokenizer {
type OrthographyTokenizerOptions (line 113) | interface OrthographyTokenizerOptions extends RegexTokenizerOptions {
class OrthographyTokenizer (line 117) | class OrthographyTokenizer extends RegexpTokenizer {
class WordTokenizer (line 121) | class WordTokenizer extends RegexpTokenizer {
class WordPunctTokenizer (line 125) | class WordPunctTokenizer extends RegexpTokenizer {
class TreebankWordTokenizer (line 129) | class TreebankWordTokenizer extends Tokenizer {
class TokenizerJa (line 133) | class TokenizerJa extends Tokenizer {
class SentenceTokenizer (line 138) | class SentenceTokenizer extends Tokenizer {
FILE: lib/natural/tokenizers/regexp_tokenizer.js
constant DEBUG (line 25) | const DEBUG = false
class RegexpTokenizer (line 30) | class RegexpTokenizer extends Tokenizer {
method constructor (line 31) | constructor (opts) {
method tokenize (line 45) | tokenize (s) {
class OrthographyTokenizer (line 61) | class OrthographyTokenizer {
method constructor (line 62) | constructor (options) {
method tokenize (line 75) | tokenize (text) {
class WordTokenizer (line 90) | class WordTokenizer extends RegexpTokenizer {
method constructor (line 91) | constructor (options) {
class WordPunctTokenizer (line 107) | class WordPunctTokenizer extends RegexpTokenizer {
method constructor (line 108) | constructor (options) {
FILE: lib/natural/tokenizers/sentence_tokenizer.js
constant NUM (line 26) | const NUM = 'NUMBER'
constant DELIM (line 27) | const DELIM = 'DELIM'
constant URI (line 28) | const URI = 'URI'
constant ABBREV (line 29) | const ABBREV = 'ABBREV'
constant DEBUG (line 31) | const DEBUG = false
function generateUniqueCode (line 33) | function generateUniqueCode (base, index) {
function escapeRegExp (line 39) | function escapeRegExp (string) {
class SentenceTokenizer (line 43) | class SentenceTokenizer extends Tokenizer {
method constructor (line 44) | constructor (abbreviations, trimSentences) {
method replaceUrisWithPlaceholders (line 60) | replaceUrisWithPlaceholders (text) {
method replaceAbbreviations (line 72) | replaceAbbreviations (text) {
method replaceDelimitersWithPlaceholders (line 86) | replaceDelimitersWithPlaceholders (text) {
method splitOnPlaceholders (line 100) | splitOnPlaceholders (text, placeholders) {
method replaceNumbersWithCode (line 119) | replaceNumbersWithCode (text) {
method revertReplacements (line 132) | revertReplacements (text) {
method revertDelimiters (line 142) | revertDelimiters (text) {
method tokenize (line 152) | tokenize (text) {
FILE: lib/natural/tokenizers/sentence_tokenizer_deprecated.js
constant DEBUG (line 27) | const DEBUG = false
class SentenceTokenizer (line 29) | class SentenceTokenizer extends Tokenizer {
method tokenize (line 30) | tokenize (text) {
FILE: lib/natural/tokenizers/tokenizer.js
class Tokenizer (line 25) | class Tokenizer {
method trim (line 26) | trim (array) {
FILE: lib/natural/tokenizers/tokenizer_case.js
class CaseTokenizer (line 26) | class CaseTokenizer extends Tokenizer {
method tokenize (line 27) | tokenize (text, preserveApostrophe) {
FILE: lib/natural/trie/index.d.ts
class Trie (line 25) | class Trie {
FILE: lib/natural/trie/trie.js
class Trie (line 28) | class Trie {
method constructor (line 29) | constructor (caseSensitive) {
method addString (line 44) | addString (string) {
method addStrings (line 71) | addStrings (list) {
method keysWithPrefix (line 86) | keysWithPrefix (prefix) {
method contains (line 128) | contains (string) {
method findMatchesOnPath (line 159) | findMatchesOnPath (search) {
method findPrefix (line 190) | findPrefix (search) {
method getSize (line 222) | getSize () {
FILE: lib/natural/util/bag.js
class Bag (line 25) | class Bag {
method constructor (line 26) | constructor () {
method add (line 31) | add (element) {
method isEmpty (line 37) | isEmpty () {
method contains (line 41) | contains (item) {
method unpack (line 48) | unpack () {
FILE: lib/natural/util/directed_edge.js
class DirectedEdge (line 25) | class DirectedEdge {
method constructor (line 26) | constructor (start, end, weight) {
method weight (line 32) | weight () {
method from (line 36) | from () {
method to (line 40) | to () {
method toString (line 44) | toString () {
FILE: lib/natural/util/edge_weighted_digraph.js
class EdgeWeightedDigraph (line 28) | class EdgeWeightedDigraph {
method constructor (line 29) | constructor () {
method v (line 37) | v () {
method e (line 44) | e () {
method add (line 48) | add (start, end, weight) {
method addEdge (line 53) | addEdge (e) {
method getAdj (line 64) | getAdj (v) {
method edges (line 72) | edges () {
method toString (line 83) | toString () {
FILE: lib/natural/util/index.d.ts
class Bag (line 31) | class Bag<T> {
class DirectedEdge (line 38) | class DirectedEdge {
class EdgeWeightedDigraph (line 46) | class EdgeWeightedDigraph {
class ShortestPathTree (line 59) | class ShortestPathTree {
class LongestPathTree (line 68) | class LongestPathTree {
class Topological (line 77) | class Topological {
FILE: lib/natural/util/longest_path_tree.js
class LongestPathTree (line 37) | class LongestPathTree {
method constructor (line 38) | constructor (digraph, start) {
method relaxEdge (line 50) | relaxEdge (e) {
method relaxVertex (line 65) | relaxVertex (digraph, vertex, tree) {
method getDistTo (line 81) | getDistTo (v) {
method hasPathTo (line 85) | hasPathTo (v) {
method pathTo (line 89) | pathTo (v) {
FILE: lib/natural/util/shortest_path_tree.js
class ShortestPathTree (line 37) | class ShortestPathTree {
method constructor (line 38) | constructor (digraph, start) {
method relaxEdge (line 50) | relaxEdge (e) {
method relaxVertex (line 65) | relaxVertex (digraph, vertex, tree) {
method getDistTo (line 80) | getDistTo (v) {
method hasPathTo (line 84) | hasPathTo (v) {
method pathTo (line 90) | pathTo (v) {
FILE: lib/natural/util/storage/File.js
class FilePlugin (line 29) | class FilePlugin {
method store (line 30) | async store (object, options) {
method retrieve (line 37) | async retrieve (key, options) {
FILE: lib/natural/util/storage/Memcached.js
class MemcachedPlugin (line 31) | class MemcachedPlugin {
method constructor (line 32) | constructor () {
method store (line 36) | async store (object, options) {
method retrieve (line 43) | async retrieve (key, options) {
FILE: lib/natural/util/storage/MongoDB.js
class MongoDBPlugin (line 29) | class MongoDBPlugin {
method constructor (line 30) | constructor () {
method store (line 42) | async store (object, options) {
method retrieve (line 49) | async retrieve (key, options) {
FILE: lib/natural/util/storage/Postgres.js
class PostgresPlugin (line 26) | class PostgresPlugin {
method constructor (line 27) | constructor () {
method configPostgres (line 31) | async configPostgres () {
method createTableIfNotExists (line 54) | async createTableIfNotExists (client, tableName) {
method store (line 74) | async store (object, options) {
method retrieve (line 89) | async retrieve (key, options) {
FILE: lib/natural/util/storage/Redis.js
class RedisPlugin (line 29) | class RedisPlugin {
method constructor (line 30) | constructor () {
method configRedis (line 34) | async configRedis () {
method store (line 41) | async store (object, options) {
method retrieve (line 48) | async retrieve (key, options) {
FILE: lib/natural/util/storage/StorageBackend.js
constant STORAGE_TYPES (line 30) | const STORAGE_TYPES = {
class StorageBackend (line 44) | class StorageBackend {
method constructor (line 45) | constructor (storageType, options) {
method setStorageType (line 52) | async setStorageType (storageType) {
method store (line 83) | async store (object) {
method retrieve (line 91) | async retrieve (key) {
FILE: lib/natural/util/storage/index.d.ts
type STORAGE_TYPES (line 23) | enum STORAGE_TYPES {
class StorageBackend (line 31) | class StorageBackend {
FILE: lib/natural/util/topological.js
class Topological (line 29) | class Topological {
method constructor (line 30) | constructor (g) {
method isDAG (line 35) | isDAG () {
method order (line 42) | order () {
function topoSort (line 51) | function topoSort (vertexs, edges) {
function uniqueVertexs (line 88) | function uniqueVertexs (edges) {
FILE: lib/natural/util/utils.js
function replacer (line 34) | function replacer (translationTable) {
function flip (line 81) | function flip (obj) {
function merge (line 99) | function merge (varArgs) {
FILE: lib/natural/wordnet/data_file.js
function get (line 28) | function get (location, callbackFunction) {
FILE: lib/natural/wordnet/index.d.ts
type DataPtr (line 26) | interface DataPtr {
type DataRecord (line 33) | interface DataRecord {
type DataRecordCallback (line 47) | type DataRecordCallback = (results: DataRecord) => void
type DataRecordsCallback (line 48) | type DataRecordsCallback = (results: DataRecord[]) => void
class DataFile (line 50) | class DataFile {
type IndexRecord (line 55) | interface IndexRecord {
type IndexRecordCallback (line 64) | type IndexRecordCallback = (results: IndexRecord) => void
type IndexFind (line 66) | interface IndexFind {
type IndexFindCallback (line 73) | type IndexFindCallback = (results: IndexFind) => void
class IndexFile (line 75) | class IndexFile {
type WordNetLookupFile (line 82) | interface WordNetLookupFile {
class WordNet (line 87) | class WordNet {
FILE: lib/natural/wordnet/index_file.js
function getFileSize (line 29) | function getFileSize (path) {
function findPrevEOL (line 34) | function findPrevEOL (fd, pos, callbackFunction) {
function readLine (line 51) | function readLine (fd, pos, callback) {
function miss (line 58) | function miss (callbackFunction) {
function findAt (line 62) | function findAt (fd, size, pos, lastPos, adjustment, searchKey, callback...
function find (line 87) | function find (searchKey, callback) {
function lookupFromFile (line 102) | function lookupFromFile (word, callback) {
function lookup (line 127) | function lookup (word, callback) {
FILE: lib/natural/wordnet/wordnet.js
function pushResults (line 28) | function pushResults (data, results, offsets, callback) {
function lookupFromFiles (line 41) | function lookupFromFiles (files, results, word, callback) {
function lookup (line 59) | function lookup (word, callback) {
function get (line 70) | function get (synsetOffset, pos, callback) {
function getDataFile (line 78) | function getDataFile (pos) {
function loadSynonyms (line 91) | function loadSynonyms (synonyms, results, ptrs, callback) {
function loadResultSynonyms (line 106) | function loadResultSynonyms (synonyms, results, callback) {
function lookupSynonyms (line 115) | function lookupSynonyms (word, callback) {
function getSynonyms (line 123) | function getSynonyms () {
function WordNet (line 134) | function WordNet (dataDir) {
FILE: lib/natural/wordnet/wordnet_file.js
function appendLineChar (line 27) | function appendLineChar (fd, pos, buffPos, buff, callbackFunction) {
function open (line 45) | function open (callback) {
FILE: spec/MaxEntClassifier_spec.ts
constant DEBUG (line 44) | const DEBUG = false
FILE: spec/SentimentAnalyzer_spec.ts
function detStemmer (line 185) | function detStemmer (st: string): Stemmer | undefined {
FILE: spec/bayes_classifier_spec.ts
function setupClassifier (line 27) | function setupClassifier (): BayesClassifier {
function setupClassifierWithSentences (line 83) | function setupClassifierWithSentences (): BayesClassifier {
FILE: spec/brill_pos_tagger_spec.ts
constant DEBUG (line 31) | const DEBUG = false
function compareTaggedSentences (line 36) | function compareTaggedSentences (sentenceInOldFormat: string[][], senten...
FILE: spec/brill_pos_trainer_spec.ts
constant DEBUG (line 39) | const DEBUG = false
constant JSON_FLAG (line 40) | const JSON_FLAG = 2
function selectRuleTemplates (line 42) | function selectRuleTemplates (templateNames: string[]): RuleTemplate[] {
FILE: spec/classifier_spec.ts
function eventRegister (line 52) | function eventRegister (obj: any): void {
function assertEventResults (line 56) | function assertEventResults (): void {
FILE: spec/jaro-winkler_spec.ts
function approxEql (line 34) | function approxEql (val1: number, val2: number): boolean {
FILE: spec/logistic_regression_classifier_spec.ts
function createClassifier (line 59) | function createClassifier (): LogisticRegressionClassifier {
FILE: spec/porter_stemmer_de_spec.ts
constant DEBUG (line 28) | const DEBUG = false
FILE: spec/porter_stemmer_es_spec.ts
constant DEBUG (line 28) | const DEBUG = false
FILE: spec/porter_stemmer_nl_spec.ts
constant DEBUG (line 31) | const DEBUG = false
FILE: spec/porter_stemmer_pt_spec.ts
constant DEBUG (line 29) | const DEBUG = false
FILE: spec/sentence_analyzer_spec.ts
type Tests (line 36) | type Tests = Array<{
function testSentenceAnalyzer (line 44) | function testSentenceAnalyzer (sentenceTags: TaggedWord[], tests: Tests,...
function testSentenceType (line 172) | function testSentenceType (args: TaggedSentence, sentenceType: SenType, ...
FILE: spec/stemmer_id_spec.ts
type Tests (line 29) | type Tests = Array<[string, string]>
FILE: spec/support/count_tests.js
function countTests (line 4) | function countTests (filePath) {
function countTestsInSpecFiles (line 15) | function countTestsInSpecFiles (specFilesPath, extension) {
FILE: spec/test_data/wordnet_mini.sql
type adjpositions (line 3) | CREATE TABLE adjpositions (synsetid integer not null, wordid integer not...
type adjpositiontypes (line 4) | CREATE TABLE adjpositiontypes (position varchar(2) not null, positionnam...
type casedwords (line 5) | CREATE TABLE casedwords (casedwordid integer not null, wordid integer no...
type lexdomains (line 6) | CREATE TABLE lexdomains (lexdomainid smallint not null, lexdomainname va...
type lexlinks (line 7) | CREATE TABLE lexlinks (word1id integer not null, synset1id integer not n...
type linktypes (line 8) | CREATE TABLE linktypes (linkid smallint not null, link varchar(50), recu...
type morphmaps (line 9) | CREATE TABLE morphmaps (morphid integer not null, pos char not null, wor...
type morphs (line 10) | CREATE TABLE morphs (morphid integer not null, morph varchar(70) not nul...
type postypes (line 11) | CREATE TABLE postypes (pos char not null, posname varchar(20) not null, ...
type samples (line 12) | CREATE TABLE samples (synsetid integer not null, sampleid smallint not n...
type semlinks (line 13) | CREATE TABLE semlinks (synset1id integer not null, synset2id integer not...
type senses (line 14) | CREATE TABLE senses (wordid integer not null, synsetid integer not null,...
type synsets (line 50) | CREATE TABLE synsets (synsetid integer not null, pos char, lexdomainid s...
type vframemaps (line 84) | CREATE TABLE vframemaps (synsetid integer not null, wordid integer not n...
type vframes (line 85) | CREATE TABLE vframes (frameid smallint not null, frame varchar(50), prim...
type vframesentencemaps (line 86) | CREATE TABLE vframesentencemaps (synsetid integer not null, wordid integ...
type vframesentences (line 87) | CREATE TABLE vframesentences (sentenceid smallint not null, sentence lon...
type words (line 88) | CREATE TABLE words (wordid integer not null, lemma varchar(80) not null ...
FILE: spec/trie_spec.ts
function expectResults (line 110) | function expectResults (results: string[]): void {
Copy disabled (too large)
Download .json
Condensed preview — 376 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (23,994K chars).
[
{
"path": ".eslintrc.json",
"chars": 224,
"preview": "{\n \"env\": {\n \"browser\": true,\n \"commonjs\": true,\n \"es2021\": true\n },\n \"extends\": \"standard"
},
{
"path": ".gitconfig",
"chars": 68,
"preview": "[user]\n\temail = hwl.ter.doest@gmail.com\n\tname = Hugo W.L. ter Doest\n"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 754,
"preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: ''\nlabels: Bug\nassignees: Hugo-ter-Doest\n\n---\n\n**D"
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 620,
"preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: Feature Request\nassignees: Hugo-ter-"
},
{
"path": ".github/ISSUE_TEMPLATE/pull_request_template.md",
"chars": 140,
"preview": "Fixes #\n\n## Proposed Changes\n\n -\n -\n -\n\n## Checklist before merging\n- [ ] Added Jasmine tests\n- [ ] Updates TypeScipt"
},
{
"path": ".github/workflows/codeql-analysis.yml",
"chars": 2330,
"preview": "# For most projects, this workflow file will not need changing; you simply need\n# to commit it to your repository.\n#\n# Y"
},
{
"path": ".github/workflows/linter.yml",
"chars": 1392,
"preview": "---\n###########################\n###########################\n## Linter GitHub Actions ##\n###########################\n####"
},
{
"path": ".github/workflows/node.js.yml",
"chars": 1826,
"preview": "# This workflow will do a clean install of node dependencies, \n# build the source code and run tests across different ve"
},
{
"path": ".github/workflows/npm-publish.yml",
"chars": 931,
"preview": "# This workflow will run tests using node and then publish a package to NPMjs when a release is created\n# For more infor"
},
{
"path": ".gitignore",
"chars": 182,
"preview": "*~\n\\#*\n*.kpf\n*classifier.json\nnode_modules\nio_spec/test_data/wordnet/download/*\nio_spec/test_data/sample.json\n*.noun\n*.v"
},
{
"path": ".npmignore",
"chars": 38,
"preview": "benchmarks\nspec\nexamples\nio_spec\ndocs\n"
},
{
"path": ".nycrc",
"chars": 150,
"preview": "{\n \"include\": [\n \"io_spec/**/*_spec.js\",\n \"dist/**/*_spec.js\",\n \"lib/natural/**/*.js\",\n \"lib/natural/**/*.t"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 5239,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
},
{
"path": "CONTRIBUTING.md",
"chars": 1639,
"preview": "# Contributing\n\nWhen contributing to this repository, please explain your changes or additions in an issue or in the pul"
},
{
"path": "LICENSE.txt",
"chars": 1109,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2011, 2012 Chris Umbel, Rob Ellis, Russell Mull\n\nPermission is hereby granted, free"
},
{
"path": "README.md",
"chars": 4315,
"preview": "# natural\n\n[](https://www.npmjs.com/package/natural)\n[![Node.js "
},
{
"path": "SECURITY.md",
"chars": 676,
"preview": "# Security Policy\n\n##\n\nWe run dependabot and Github's CodeQL analysis to detect security problems.\n\n## Supported Version"
},
{
"path": "benchmarks/index.js",
"chars": 473,
"preview": "\n/**\n * Module dependencies.\n */\n\nconst uubench = require('uubench')\n\n/* global suite:writable */\nsuite = new uubench.Su"
},
{
"path": "benchmarks/metaphone.js",
"chars": 705,
"preview": "\nconst fs = require('fs')\nconst natural = require('../')\nconst metaphone = natural.Metaphone.process\n\n/* global suite */"
},
{
"path": "benchmarks/sample-id.txt",
"chars": 1703,
"preview": "Hari ini hari Sabtu. Ani tidak perlu pergi kuliah. Dia ingin pergi ke supermarket untuk berbelanja. Ani tinggal di rumah"
},
{
"path": "benchmarks/soundex.js",
"chars": 688,
"preview": "const fs = require('fs')\nconst natural = require('../')\nconst soundex = natural.SoundEx.process\n\n/* global suite */\n\n// "
},
{
"path": "benchmarks/stemmer_id.js",
"chars": 348,
"preview": "const fs = require('fs')\nconst natural = require('../')\nconst stemmerId = natural.StemmerId\n\n/* global suite */\n\nconst w"
},
{
"path": "examples/classification/MaxEntAppliedToPOSTagging_spec.js",
"chars": 6991,
"preview": "/*\nTest of Classifier based on POS tagging\nCopyright (C) 2018 Hugo W.L. ter Doest\n\nPermission is hereby granted, free of"
},
{
"path": "examples/classification/basic.js",
"chars": 1568,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/classification/recall.js",
"chars": 1306,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/classification/store.js",
"chars": 1614,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/classification/try_events.js",
"chars": 546,
"preview": "const natural = require('../../lib/natural')\nconst PorterStemmerEs = require('../../lib/natural/stemmers/porter_stemmer_"
},
{
"path": "examples/inflection/count.js",
"chars": 1464,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/inflection/noun.js",
"chars": 1434,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/phonetics/compare.js",
"chars": 1526,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/phonetics/tokenize_and_phoneticize.js",
"chars": 1925,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/stemming/stem_corpus.js",
"chars": 1271,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/stemming/stem_word.js",
"chars": 1192,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "examples/tfidf/array_example.js",
"chars": 1500,
"preview": "/*\nCopyright (c) 2011, Rob Ellis, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "examples/tfidf/multiple_terms.js",
"chars": 1442,
"preview": "/*\nCopyright (c) 2011, Rob Ellis, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "examples/tfidf/tfidf_example.js",
"chars": 1840,
"preview": "/*\nCopyright (c) 2011, Rob Ellis, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "examples/tokenizer/testSentenceTokenizer.js",
"chars": 2217,
"preview": "const Tokenizer = require('../../lib/natural').SentenceTokenizer\n\nconst abbreviations = require('../../lib/natural').abb"
},
{
"path": "index.js",
"chars": 1106,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "io_spec/MaxEntClassifier_spec.js",
"chars": 3532,
"preview": "/*\nCopyright (c) 2019, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "io_spec/Sample_spec.js",
"chars": 2545,
"preview": "/*\nCopyright (c) 2019, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "io_spec/StorageBackend_spec.js",
"chars": 2439,
"preview": "/*\nCopyright (c) 2024, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "io_spec/bayes_classifier_spec.js",
"chars": 4290,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "io_spec/classifier_spec.js",
"chars": 3437,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "io_spec/logistic_regression_classifier_spec.js",
"chars": 3732,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "io_spec/test_data/tfidf/one",
"chars": 17,
"preview": "disk document one"
},
{
"path": "io_spec/test_data/tfidf/tfidf_document1.txt",
"chars": 28,
"preview": "this document is about node."
},
{
"path": "io_spec/test_data/tfidf/tfidf_document2.txt",
"chars": 28,
"preview": "this document is about ruby."
},
{
"path": "io_spec/test_data/tfidf/tfidf_document3.txt",
"chars": 37,
"preview": "this document is about ruby and node."
},
{
"path": "io_spec/test_data/tfidf/tfidf_document4.txt",
"chars": 49,
"preview": "this document is about node. it has node examples"
},
{
"path": "io_spec/test_data/tfidf/two",
"chars": 17,
"preview": "disk document two"
},
{
"path": "io_spec/tfidf_spec.js",
"chars": 4676,
"preview": "/*\nCopyright (c) 2011, Rob Ellis, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "io_spec/tmp/.this_folder_exists.txt",
"chars": 0,
"preview": ""
},
{
"path": "io_spec/tmp/055ff9e6-bf89-42d0-b44a-4dcc523bf6fc.json",
"chars": 638,
"preview": "{\"_events\":{},\"_eventsCount\":0,\"classifier\":{\"classFeatures\":{\"computing\":{\"0\":2,\"1\":2,\"2\":2,\"3\":3,\"4\":2},\"literature\":{"
},
{
"path": "io_spec/tmp/7cfb947f-0115-4ef6-b21b-d9554d51caf2.json",
"chars": 31,
"preview": "{\"attr1\":\"val1\",\"attr2\":\"val2\"}"
},
{
"path": "io_spec/tmp/bf35794b-83e7-4628-8ec2-a0cf451a6fb2.json",
"chars": 97,
"preview": "{\"_events\":{},\"_eventsCount\":0,\"docs\":[],\"features\":{},\"stemmer\":{},\"lastAdded\":0,\"Threads\":null}"
},
{
"path": "io_spec/tmp/c2ee3580-26b9-4972-b7f9-e59a933ed021.json",
"chars": 1149,
"preview": "{\"_events\":{},\"_eventsCount\":0,\"classifier\":{\"examples\":{\"computing\":[[1,1,0,0,0,0,0,0,0],[0,0,1,1,0,0,0,0,0],[0,0,0,1,1"
},
{
"path": "io_spec/wordnet_index_spec.js",
"chars": 1718,
"preview": "/*\nCopyright (c) 2014, John Markos O'Neill\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "io_spec/wordnet_spec.js",
"chars": 2359,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "io_spec/wordnet_test.ts",
"chars": 719,
"preview": "import { WordNet } from '../lib/natural/wordnet'\n\nlet wordnet = new WordNet()\nwordnet.lookup('node', function (results) "
},
{
"path": "lib/natural/analyzers/SenType.ts",
"chars": 1279,
"preview": "/*\nCopyright (c) 2024,\nHugo W.L. ter Doest <https://github.com/Hugo-ter-Doest>\n\nPermission is hereby granted, free of ch"
},
{
"path": "lib/natural/analyzers/index.d.ts",
"chars": 1925,
"preview": "/*\nCopyright (c) 2022,\nHugo W.L. ter Doest <https://github.com/Hugo-ter-Doest>\n\nPermission is hereby granted, free of ch"
},
{
"path": "lib/natural/analyzers/index.js",
"chars": 1135,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/analyzers/sentence_analyzer.js",
"chars": 5345,
"preview": "/*\nCopyright (c) 2011, Rob Ellis, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "lib/natural/brill_pos_tagger/data/Dutch/README.txt",
"chars": 76,
"preview": "Transformation rules and lexicon are from\nhttps://mlnl.net/jg/software/bnl/\n"
},
{
"path": "lib/natural/brill_pos_tagger/data/Dutch/brill_CONTEXTRULES.jg",
"chars": 19596,
"preview": "Pron(betr,neut,zelfst) Pron(aanw,neut,attr) PREVTAG Prep(voor)\nArt(bep,onzijd,neut) Pron(onbep,neut,zelfst) NEXT1OR2TAG "
},
{
"path": "lib/natural/brill_pos_tagger/data/Dutch/brill_CONTEXTRULES.json",
"chars": 21611,
"preview": "{\n \"rules\": [\n \"Pron(betr,neut,zelfst) Pron(aanw,neut,attr) PREVTAG Prep(voor)\",\n \"Art(bep,onzijd,neut) Pron(onbe"
},
{
"path": "lib/natural/brill_pos_tagger/data/Dutch/brill_LEXICON.jg",
"chars": 378224,
"preview": "nijptangen N(soort,mv,neut) \nafhankelijk Adj(attr,stell,onverv) \nOver Prep(voor) \npartisanenster N(soort,ev,neut) \novert"
},
{
"path": "lib/natural/brill_pos_tagger/data/Dutch/brill_Lexicon.json",
"chars": 587850,
"preview": "{\n \"1\": [\n \"Num(hoofd,bep,attr,onverv)\",\n \"N(eigen,ev,neut)\",\n \"N(soort,ev,neut)\",\n \"Num(hoofd,bep,zelfst,o"
},
{
"path": "lib/natural/brill_pos_tagger/data/English/README.txt",
"chars": 529,
"preview": "The tranformation rules in tr_from_brill_paper.txt are from this article:\nA simple rule-based part of speech tagger, Eri"
},
{
"path": "lib/natural/brill_pos_tagger/data/English/lexicon_from_posjs.json",
"chars": 4014030,
"preview": "{\n \"'\": [\n \"\\\"\"\n ],\n \"\\\"\": [\n \"\\\"\"\n ],\n \"Ranavan\": [\n \"NNP\"\n ], \n \"fawn\": [\n "
},
{
"path": "lib/natural/brill_pos_tagger/data/English/tr_from_brill_paper.json",
"chars": 326,
"preview": "{\n \"rules\": [\n \"TO IN NEXT-TAG AT\",\n \"VBN VBD PREV-WORD-IS-CAP YES\",\n \"VBD VBN PREV-1-OR-2-OR-3-TAG HVD\",\n "
},
{
"path": "lib/natural/brill_pos_tagger/data/English/tr_from_brill_paper.txt",
"chars": 236,
"preview": "TO IN NEXT-TAG AT\nVBN VBD PREV-WORD-IS-CAP YES\nVBD VBN PREV-1-OR-2-OR-3-TAG HVD\nVB NN PREV-1-OR-2-TAG AT\nNN VB PREV-TAG "
},
{
"path": "lib/natural/brill_pos_tagger/data/English/tr_from_posjs.json",
"chars": 685,
"preview": "{\n \"rules\": [\n \"VBD NN PREV-TAG DT\",\n \"VBP NN PREV-TAG DT\",\n \"VB NN PREV-TAG DT\",\n \"NN CD CURRENT-WORD-IS-N"
},
{
"path": "lib/natural/brill_pos_tagger/data/English/tr_from_posjs.txt",
"chars": 539,
"preview": "VBD NN PREV-TAG DT\nVBP NN PREV-TAG DT\nVB NN PREV-TAG DT\nNN CD CURRENT-WORD-IS-NUMBER YES\nNNP CD CURRENT-WORD-IS-NUMBER Y"
},
{
"path": "lib/natural/brill_pos_tagger/index.d.ts",
"chars": 6598,
"preview": "/*\nCopyright (c) 2022,\nDylan R. E. Moonfire <https://github.com/dmoonfire>,\nEmily Marigold Klassen <https://github.com/f"
},
{
"path": "lib/natural/brill_pos_tagger/index.js",
"chars": 1536,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/brill_pos_tagger/lib/Brill_POS_Tagger.js",
"chars": 2056,
"preview": "/*\n Brill's POS Tagger\n Copyright (C) 2019 Hugo W.L. ter Doest\n\n This program is free software: you can redistribute "
},
{
"path": "lib/natural/brill_pos_tagger/lib/Brill_POS_Tester.js",
"chars": 1872,
"preview": "/*\n Brill's POS Testing class\n Copyright (C) 2017 Hugo W.L. ter Doest\n\n This program is free software: you can redist"
},
{
"path": "lib/natural/brill_pos_tagger/lib/Brill_POS_Trainer.js",
"chars": 15178,
"preview": "/*\n Brill POS Trainer class\n Copyright (C) 2017 Hugo W.L. ter Doest\n\n This program is free software: you can redistri"
},
{
"path": "lib/natural/brill_pos_tagger/lib/Corpus.js",
"chars": 5587,
"preview": "/*\n Corpus class for parsing and analysing corpora\n Copyright (C) 2019 Hugo W.L. ter Doest\n\n This program is free sof"
},
{
"path": "lib/natural/brill_pos_tagger/lib/Lexicon.js",
"chars": 3421,
"preview": "/*\n Lexicon class\n Copyright (C) 2019 Hugo W.L. ter Doest\n\n This program is free software: you can redistribute it an"
},
{
"path": "lib/natural/brill_pos_tagger/lib/Predicate.js",
"chars": 1539,
"preview": "/*\n Predicates for the Brill tagger\n Copyright (C) 2019 Hugo W.L. ter Doest\n\n This program is free software: you can "
},
{
"path": "lib/natural/brill_pos_tagger/lib/RuleSet.js",
"chars": 2479,
"preview": "/*\n Set of transformation rules\n Copyright (C) 2019 Hugo W.L. ter Doest\n\n This program is free software: you can r"
},
{
"path": "lib/natural/brill_pos_tagger/lib/RuleTemplate.js",
"chars": 1152,
"preview": "/*\n Rule Template class for deriving transformation rules.\n Copyright (C) 2017 Hugo W.L. ter Doest\n\n This program is "
},
{
"path": "lib/natural/brill_pos_tagger/lib/RuleTemplates.js",
"chars": 18615,
"preview": "/*\n Rule templates that provide metadata for generating transformation rules\n Copyright (C) 2017 Hugo W.L. ter Doest\n\n"
},
{
"path": "lib/natural/brill_pos_tagger/lib/Sentence.js",
"chars": 1190,
"preview": "/*\n Sentence class that generates sample elements from sentences\n Copyright (C) 2018 Hugo W.L. ter Doest\n\n This progr"
},
{
"path": "lib/natural/brill_pos_tagger/lib/TF_Parser.js",
"chars": 17559,
"preview": "/* jscpd:ignore-start */\n\n/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n'use strict'\n\nfunction peg$subcl"
},
{
"path": "lib/natural/brill_pos_tagger/lib/TF_Parser.pegjs",
"chars": 1143,
"preview": "{\n var TransformationRule = require(\"./TransformationRule\");\n}\n\ntransformation_rule = c1: category1 c2: category2 pred:"
},
{
"path": "lib/natural/brill_pos_tagger/lib/TransformationRule.js",
"chars": 3008,
"preview": "/*\n Transformation rules for the Brill tagger\n Copyright (C) 2017 Hugo W.L. ter Doest\n\n This program is free software"
},
{
"path": "lib/natural/classifiers/bayes_classifier.js",
"chars": 2294,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/classifiers/classifier.js",
"chars": 5297,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/classifiers/classifier_train_parallel.js",
"chars": 6686,
"preview": "const os = require('os')\n\nlet Threads = null\n\ntry {\n Threads = require('webworker-threads')\n} catch (e) {\n // Silently"
},
{
"path": "lib/natural/classifiers/index.d.ts",
"chars": 8906,
"preview": "import events from 'events'\nimport type { Corpus, Sentence } from '../brill_pos_tagger'\nimport type { Stemmer } from '.."
},
{
"path": "lib/natural/classifiers/index.js",
"chars": 1791,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/classifiers/logistic_regression_classifier.js",
"chars": 2565,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/classifiers/maxent/Classifier.js",
"chars": 4027,
"preview": "/*\nClassifier class that provides functionality for training and\nclassification\nCopyright (C) 2017, 2023 Hugo W.L. ter D"
},
{
"path": "lib/natural/classifiers/maxent/Context.js",
"chars": 1416,
"preview": "/*\nContext class\nCopyright (C) 2017, 2023 Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any pers"
},
{
"path": "lib/natural/classifiers/maxent/Distribution.js",
"chars": 4639,
"preview": "/*\nDistribution class for probability distributions\nCopyright (C) 2017, 2023 Hugo W.L. ter Doest\n\nPermission is hereby g"
},
{
"path": "lib/natural/classifiers/maxent/Element.js",
"chars": 1382,
"preview": "/*\nElement class for elements in the event space\nCopyright (C) 2017, 2023 Hugo W.L. ter Doest\n\nPermission is hereby gran"
},
{
"path": "lib/natural/classifiers/maxent/Feature.js",
"chars": 2854,
"preview": "/*\nFeature class for features that fire (or don't) on combinations of context\nand class\nCopyright (C) 2017, 2023 Hugo W."
},
{
"path": "lib/natural/classifiers/maxent/FeatureSet.js",
"chars": 2298,
"preview": "/*\nFeature set class for administrating a set of unique features\nCopyright (C) 2017, 2023 Hugo W.L. ter Doest\n\nPermissio"
},
{
"path": "lib/natural/classifiers/maxent/GISScaler.js",
"chars": 5735,
"preview": "/*\nGISScaler class that finds parameters of features\nCopyright (C) 2017, 2023 Hugo W.L. ter Doest\n\nPermission is hereby "
},
{
"path": "lib/natural/classifiers/maxent/POS/ME_Corpus.js",
"chars": 2061,
"preview": "/*\nCorpus class specific for MaxEnt modeling\nCopyright (C) 2018 Hugo W.L. ter Doest\n\nPermission is hereby granted, free "
},
{
"path": "lib/natural/classifiers/maxent/POS/ME_Sentence.js",
"chars": 2502,
"preview": "/*\nSentence class specific for MaxEnt modeling\nCopyright (C) 2019 Hugo W.L. ter Doest\n\nPermission is hereby granted, fre"
},
{
"path": "lib/natural/classifiers/maxent/POS/POS_Element.js",
"chars": 5694,
"preview": "/*\nElement class for POS tagging\nCopyright (C) 2018 Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, t"
},
{
"path": "lib/natural/classifiers/maxent/Sample.js",
"chars": 4045,
"preview": "/*\nSample space of observed events\nCopyright (C) 2018 Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge,"
},
{
"path": "lib/natural/classifiers/maxent/SimpleExample/SE_Element.js",
"chars": 1660,
"preview": "/*\nSimple Example Element class\nCopyright (C) 2018 Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to"
},
{
"path": "lib/natural/distance/dice_coefficient.js",
"chars": 2211,
"preview": "/*\nCopyright (c) 2021, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "lib/natural/distance/hamming_distance.js",
"chars": 1850,
"preview": "/*\nCopyright (c) 2018, Shane Caldwell, Hugo ter Doest\n\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "lib/natural/distance/index.d.ts",
"chars": 2822,
"preview": "/*\nCopyright (c) 2023,\n Dylan R. E. Moonfire <https://github.com/dmoonfire>,\n Emily Marigold Klassen <https://github.c"
},
{
"path": "lib/natural/distance/index.js",
"chars": 1642,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/distance/jaro-winkler_distance.js",
"chars": 4460,
"preview": "/*\r\nCopyright (c) 2012, Adam Phillabaum, Chris Umbel\r\n\r\nPermission is hereby granted, free of charge, to any person obta"
},
{
"path": "lib/natural/distance/levenshtein_distance.js",
"chars": 8875,
"preview": "/*\nCopyright (c) 2012, Sid Nallu, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a c"
},
{
"path": "lib/natural/index.d.ts",
"chars": 1582,
"preview": "/*\nCopyright (c) 2022,\nHugo W.L. ter Doest <https://github.com/Hugo-ter-Doest>\n\nPermission is hereby granted, free of ch"
},
{
"path": "lib/natural/index.js",
"chars": 1752,
"preview": "/*\nCopyright (c) 2021, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "lib/natural/inflectors/count_inflector.js",
"chars": 1494,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/inflectors/form_set.js",
"chars": 1204,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/inflectors/fr/count_inflector.js",
"chars": 2032,
"preview": "/*\nCopyright (c) 2012, Guillaume Marty\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof "
},
{
"path": "lib/natural/inflectors/fr/noun_inflector.js",
"chars": 13627,
"preview": "/*\n Copyright (c) 2012, Guillaume Marty\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n "
},
{
"path": "lib/natural/inflectors/index.d.ts",
"chars": 1897,
"preview": "/*\nCopyright (c) 2022, Dylan R. E. Moonfire <https://github.com/dmoonfire>, Emily Marigold Klassen <https://github.com/f"
},
{
"path": "lib/natural/inflectors/index.js",
"chars": 1425,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/inflectors/ja/noun_inflector.js",
"chars": 4695,
"preview": "/*\n Copyright (c) 2012, Guillaume Marty\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n "
},
{
"path": "lib/natural/inflectors/noun_inflector.js",
"chars": 6685,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/inflectors/present_verb_inflector.js",
"chars": 2502,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/inflectors/singular_plural_inflector.js",
"chars": 3256,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/ngrams/index.d.ts",
"chars": 2920,
"preview": "/*\nCopyright (c) 2022, Dylan R. E. Moonfire <https://github.com/dmoonfire>,\nEmily Marigold Klassen <https://github.com/f"
},
{
"path": "lib/natural/ngrams/index.js",
"chars": 1156,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/ngrams/ngrams.js",
"chars": 4455,
"preview": "/*\nCopyright (c) 2011, 2018 Rob Ellis, Chris Umbel, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, t"
},
{
"path": "lib/natural/ngrams/ngrams_zh.js",
"chars": 2719,
"preview": "/*\nCopyright (c) 2014, Lee Wenzhu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this "
},
{
"path": "lib/natural/normalizers/index.d.ts",
"chars": 2284,
"preview": "/*\nCopyright (c) 2022, Dylan R. E. Moonfire <https://github.com/dmoonfire>,\nEmily Marigold Klassen <https://github.com/f"
},
{
"path": "lib/natural/normalizers/index.js",
"chars": 1430,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/normalizers/normalizer.js",
"chars": 2903,
"preview": "/*\n Copyright (c) 2013, Kenneth Koch\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of "
},
{
"path": "lib/natural/normalizers/normalizer_ja.js",
"chars": 13036,
"preview": "/*\n Copyright (c) 2012, Guillaume Marty\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n "
},
{
"path": "lib/natural/normalizers/normalizer_no.js",
"chars": 2200,
"preview": "/*\n Copyright (c) 2014, Kristoffer Brabrand\n\n Permission is hereby granted, free of charge, to any person obtaining a co"
},
{
"path": "lib/natural/normalizers/normalizer_sv.js",
"chars": 1616,
"preview": "/*\n Copyright (c) 2017, Dogan Yazar\n\n Permission is hereby granted, free of charge, to any person obtaining a copy\n of t"
},
{
"path": "lib/natural/normalizers/remove_diacritics.js",
"chars": 9557,
"preview": "/*\n Copyright (c) 2012, Alexy Maslennikov\n\n Permission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "lib/natural/phonetics/dm_soundex.js",
"chars": 8072,
"preview": "/*\nCopyright (c) 2012, Alexy Maslenninkov\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\n"
},
{
"path": "lib/natural/phonetics/double_metaphone.js",
"chars": 14774,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/phonetics/index.d.ts",
"chars": 2959,
"preview": "/*\nCopyright (c) 2022, Dylan R. E. Moonfire <https://github.com/dmoonfire>, Emily Marigold Klassen <https://github.com/f"
},
{
"path": "lib/natural/phonetics/index.js",
"chars": 1259,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/phonetics/metaphone.js",
"chars": 4265,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/phonetics/phonetic.js",
"chars": 1696,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/phonetics/soundex.js",
"chars": 2439,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/sentiment/Basque/senticon_eu.json",
"chars": 329794,
"preview": "{\n \"adeitasun\": {\n \"pos\": \"n\",\n \"pol\": \"0.447\",\n \"std\": \"0.216\"\n },\n \"adorea eman\": {\n \"pos\": \"v\",\n \"p"
},
{
"path": "lib/natural/sentiment/Catalan/senticon_ca.json",
"chars": 552932,
"preview": "{\n \"acontentar-se\": {\n \"pos\": \"v\",\n \"pol\": \"0.5\",\n \"std\": \"0.0\"\n },\n \"admiració\": {\n \"pos\": \"n\",\n \"pol"
},
{
"path": "lib/natural/sentiment/Dutch/negations_du.json",
"chars": 68,
"preview": "{\n \"words\": [\"niet\", \"nooit\", \"niemand\", \"niets\", \"nee\", \"neen\"]\n}\n"
},
{
"path": "lib/natural/sentiment/Dutch/pattern-sentiment-nl.json",
"chars": 964380,
"preview": "{\n \"Amsterdams\": {\n \"form\": \"Amsterdams\",\n \"cornetto_id\": \"r_a-16677\",\n \"cornetto_synset_id\": \"\",\n \"wordnet"
},
{
"path": "lib/natural/sentiment/English/negations_en.json",
"chars": 49,
"preview": "{\n \"words\": [\"not\", \"no\", \"never\", \"neither\"]\n}\n"
},
{
"path": "lib/natural/sentiment/English/pattern-sentiment-en.json",
"chars": 403725,
"preview": "{\n \"13th\": {\n \"form\": \"13th\",\n \"wordnet_id\": \"a-02203763\",\n \"pos\": \"JJ\",\n \"sense\": \"coming next after the t"
},
{
"path": "lib/natural/sentiment/English/senticon_en.json",
"chars": 1896088,
"preview": "{\n \"admirable\": {\n \"pos\": \"a\",\n \"pol\": \"1.0\",\n \"std\": \"0.0\"\n },\n \"amorous\": {\n \"pos\": \"a\",\n \"pol\": \"0."
},
{
"path": "lib/natural/sentiment/French/pattern-sentiment-fr.json",
"chars": 835898,
"preview": "{\n \"abandonné\": {\n \"form\": \"abandonné\",\n \"pos\": \"JJ\",\n \"polarity\": \"-0.30\",\n \"subjectivity\": \"0.40\",\n \"i"
},
{
"path": "lib/natural/sentiment/Galician/senticon_gl.json",
"chars": 371277,
"preview": "{\n \"adecuado\": {\n \"pos\": \"a\",\n \"pol\": \"0.675\",\n \"std\": \"0.105\"\n },\n \"agarimoso\": {\n \"pos\": \"a\",\n \"pol\""
},
{
"path": "lib/natural/sentiment/German/negations_de.json",
"chars": 42,
"preview": "{\n \"words\": [\"kein\", \"nein\", \"nicht\"]\n}"
},
{
"path": "lib/natural/sentiment/German/pattern-sentiment-de.json",
"chars": 831601,
"preview": "{\n \"Abbau\": {\n \"form\": \"Abbau\",\n \"polarity\": \"-0.058\",\n \"pos\": \"NN\",\n \"sense\": \"Abbaus,Ab"
},
{
"path": "lib/natural/sentiment/Italian/pattern-sentiment-it.json",
"chars": 479154,
"preview": "{\n \"FALSO\": {\n \"form\": \"FALSO\",\n \"pos\": \"\",\n \"polarity\": \"0.00\",\n \"subjectivity\": \"0.00\",\n \"intensity\": "
},
{
"path": "lib/natural/sentiment/Portuguese/afinnShortSortedPortuguese.json",
"chars": 22682,
"preview": "{\n \"😂\": 1,\n \"❤\": 3,\n \"♥\": 3,\n \"😍\": 3,\n \"😭\": -1,\n \"😘\": 3,\n \"😊\": 3,\n \"👌\": 2,\n \"💕\": 3,\n \"👏\": 2,\n \"😁\": 2,\n \"☺\": "
},
{
"path": "lib/natural/sentiment/Portuguese/negations_pt.json",
"chars": 61,
"preview": "{\n \"words\": [\n \"não\", \"nunca\",\n \"jamais\", \"nem\"\n ]\n}\n"
},
{
"path": "lib/natural/sentiment/SentimentAnalyzer.js",
"chars": 6117,
"preview": "/*\n Copyright (c) 2019, Domingo Martín Mancera, Hugo W.L. ter Doest (based on https://github.com/dmarman/lorca)\n\n Perm"
},
{
"path": "lib/natural/sentiment/Spanish/afinnShortSortedSpanish.json",
"chars": 19626,
"preview": "{\n\"😂\": 1,\n\"❤\": 3,\n\"♥\": 3,\n\"😍\": 3,\n\"😭\": -1,\n\"😘\": 3,\n\"😊\": 3,\n\"👌\": 2,\n\"💕\": 3,\n\"👏\": 2,\n\"😁\": 2,\n\"☺\": 3,\n\"♡\": 3,\n\"👍\": 2,\n\"😩\": "
},
{
"path": "lib/natural/sentiment/Spanish/negations_es.json",
"chars": 46,
"preview": "{\n \"words\": [\"no\", \"nunca\", \"jamás\", \"ni\"]\n}\n"
},
{
"path": "lib/natural/sentiment/Spanish/senticon_es.json",
"chars": 873564,
"preview": "{\n \"acertado\": {\n \"pos\": \"a\",\n \"pol\": \"0.708\",\n \"std\": \"0.149\"\n },\n \"admirable\": {\n \"pos\": \"a\",\n \"pol\""
},
{
"path": "lib/natural/sentiment/index.d.ts",
"chars": 1760,
"preview": "/*\nCopyright (c) 2022,\n Dylan R. E. Moonfire <https://github.com/dmoonfire>,\n Emily Marigold Klassen <https://github.c"
},
{
"path": "lib/natural/sentiment/index.js",
"chars": 1136,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/sentiment/tools/README.md",
"chars": 895,
"preview": "# Tools\nThis folder contains some tools for manipulating vocabularies for the sentiment analyzer.\n\n## `sentimentXmlParse"
},
{
"path": "lib/natural/sentiment/tools/XmlParser4PatternData.js",
"chars": 2214,
"preview": "/*\nCopyright (c) 2019, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "lib/natural/sentiment/tools/sentimentXmlParser.js",
"chars": 2205,
"preview": "/*\nCopyright (c) 2019, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "lib/natural/spellcheck/index.d.ts",
"chars": 1487,
"preview": "/*\nCopyright (c) 2022,\nDylan R. E. Moonfire <https://github.com/dmoonfire>,\nEmily Marigold Klassen <https://github.com/f"
},
{
"path": "lib/natural/spellcheck/index.js",
"chars": 1122,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/spellcheck/spellcheck.js",
"chars": 5021,
"preview": "/*\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated document"
},
{
"path": "lib/natural/stemmers/Carry/index.js",
"chars": 2896,
"preview": "/*\nCopyright (c) 2020, Johan Maupetit, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person "
},
{
"path": "lib/natural/stemmers/Carry/stepConfs.js",
"chars": 5508,
"preview": "/*\nCopyright (c) 2020, Johan Maupetit\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof t"
},
{
"path": "lib/natural/stemmers/Carry/utils.js",
"chars": 1238,
"preview": "/*\nCopyright (c) 2020, Johan Maupetit\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof t"
},
{
"path": "lib/natural/stemmers/index.d.ts",
"chars": 3493,
"preview": "/*\nCopyright (c) 2022, Dylan R. E. Moonfire <https://github.com/dmoonfire>, Emily Marigold Klassen <https://github.com/f"
},
{
"path": "lib/natural/stemmers/index.js",
"chars": 1992,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/indonesian/base_stemmer_id.js",
"chars": 2683,
"preview": "/*\nCopyright (c) 2017, Alif Bhaskoro, Andy Librian, R. Kukuh (Reimplemented from https://github.com/sastrawi/sastrawi)\n\n"
},
{
"path": "lib/natural/stemmers/indonesian/data/kata-dasar.json",
"chars": 385962,
"preview": "[\n \"aba\",\n \"abad\",\n \"abadi\",\n \"abadiah\",\n \"abah\",\n \"abai\",\n \"abaimana\",\n \"abaka\",\n \"abaktinal\",\n \"abakus\",\n \""
},
{
"path": "lib/natural/stemmers/indonesian/prefix_rules.js",
"chars": 28332,
"preview": "/*\nCopyright (c) 2017, Alif Bhaskoro, Andy Librian, R. Kukuh (Reimplemented from https://github.com/sastrawi/sastrawi)\n\n"
},
{
"path": "lib/natural/stemmers/indonesian/removal.js",
"chars": 1758,
"preview": "/*\nCopyright (c) 2017, Alif Bhaskoro, Andy Librian, R. Kukuh (Reimplemented from https://github.com/sastrawi/sastrawi)\n\n"
},
{
"path": "lib/natural/stemmers/indonesian/stemmer_id.js",
"chars": 7176,
"preview": "/*\nCopyright (c) 2017, Alif Bhaskoro, Andy Librian, R. Kukuh (Reimplemented from https://github.com/sastrawi/sastrawi)\n\n"
},
{
"path": "lib/natural/stemmers/indonesian/suffix_rules.js",
"chars": 2529,
"preview": "/*\nCopyright (c) 2017, Alif Bhaskoro, Andy Librian, R. Kukuh (Reimplemented from https://github.com/sastrawi/sastrawi)\n\n"
},
{
"path": "lib/natural/stemmers/lancaster_rules.js",
"chars": 13362,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/lancaster_stemmer.js",
"chars": 2714,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/porter_stemmer.js",
"chars": 7577,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/porter_stemmer_de.js",
"chars": 7093,
"preview": "/*\n * Original author: Joder Illi\n * Integration in Natural by Hugo W.L. ter Doest\n *\n * Copyright (c) 2010, FormBlitz A"
},
{
"path": "lib/natural/stemmers/porter_stemmer_es.js",
"chars": 9070,
"preview": "/*\n Copyright (c) 2018, Domingo Martín Mancera\n\n Permission is hereby granted, free of charge, to any person obtaining"
},
{
"path": "lib/natural/stemmers/porter_stemmer_fa.js",
"chars": 1408,
"preview": "/*\r\nCopyright (c) 2011, Chris Umbel\r\nFarsi Porter Stemmer by Fardin Koochaki <me@fardinak.com>\r\n\r\nPermission is hereby g"
},
{
"path": "lib/natural/stemmers/porter_stemmer_fr.js",
"chars": 14291,
"preview": "/*\nCopyright (c) 2014, Ismaël Héry\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/porter_stemmer_it.js",
"chars": 8965,
"preview": "/*\r\nCopyright (c) 2012, Leonardo Fenu, Chris Umbel\r\n\r\nPermission is hereby granted, free of charge, to any person obtain"
},
{
"path": "lib/natural/stemmers/porter_stemmer_nl.js",
"chars": 10220,
"preview": "/*\nCopyright (c) 2018, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "lib/natural/stemmers/porter_stemmer_no.js",
"chars": 3981,
"preview": "/*\nCopyright (c) 2014, Kristoffer Brabrand\n\nPermission is hereby granted, free of charge, to any person obtaining a copy"
},
{
"path": "lib/natural/stemmers/porter_stemmer_pt.js",
"chars": 8363,
"preview": "/*\nCopyright (c) 2015, Luís Rodrigues\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof t"
},
{
"path": "lib/natural/stemmers/porter_stemmer_ru.js",
"chars": 4458,
"preview": "/*\nCopyright (c) 2012, Polyakov Vladimir, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtai"
},
{
"path": "lib/natural/stemmers/porter_stemmer_sv.js",
"chars": 2944,
"preview": "/*\nCopyright (c) 2017, Dogan Yazar\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/porter_stemmer_uk.js",
"chars": 3293,
"preview": "'use strict'\n\nconst Stemmer = require('./stemmer_uk')\n\nconst PorterStemmer = new Stemmer()\nmodule.exports = PorterStemme"
},
{
"path": "lib/natural/stemmers/stemmer.js",
"chars": 2587,
"preview": "/*\nCopyright (c) 2011, Chris Umbel\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/stemmer_de.js",
"chars": 1852,
"preview": "\n/*\nCopyright (c) 2023, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
},
{
"path": "lib/natural/stemmers/stemmer_es.js",
"chars": 2102,
"preview": "/*\nCopyright (c) 2012, 2018 David Przybilla, Chris Umbel, Hugo W.L. ter Doest\n\nPermission is hereby granted, free of cha"
},
{
"path": "lib/natural/stemmers/stemmer_fa.js",
"chars": 1961,
"preview": "/*\r\nCopyright (c) 2011, Chris Umbel\r\nFarsi Stemmer by Fardin Koochaki <me@fardinak.com>\r\n\r\nPermission is hereby granted,"
},
{
"path": "lib/natural/stemmers/stemmer_fr.js",
"chars": 2078,
"preview": "/*\nCopyright (c) 2014, Ismaël Héry\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this"
},
{
"path": "lib/natural/stemmers/stemmer_it.js",
"chars": 2044,
"preview": "/*\r\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated docume"
}
]
// ... and 176 more files (download for full content)
About this extraction
This page contains the full source code of the NaturalNode/natural GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 376 files (19.3 MB), approximately 5.1M tokens, and a symbol index with 872 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.