Skip to main content

Linguistic Pattern Lab using spaCy

Project description

LingPatLab

PyPI version Downloads Python 3.10+ License: MIT Code style: autopep8 spaCy

Linguistic Pattern Laboratory: Advanced NLP pipeline for text analysis, entity extraction, and pattern recognition.

Features

  • Tokenization: Custom Graffl tokenizer with intelligent handling of contractions, abbreviations, and punctuation
  • Parsing: Deep linguistic analysis with POS tagging, dependency parsing, and WordNet integration
  • Entity Extraction: Pattern-based extraction of people and topics with anaphora resolution
  • Segmentation: Paragraph and sentence boundary detection
  • Rich Annotations: Sentiment, lemmatization, stemming, and morphological features

Installation

pip install lingpatlab

Quick Start

from lingpatlab import LingPatLab

api = LingPatLab()

# Parse text into structured tokens
sentence = api.parse_input_text("Admiral Nimitz commanded the Pacific Fleet.")
print(sentence.to_string())

# Extract people with anaphora resolution
text = "Admiral William Halsey led the fleet. Halsey was known for his aggressive tactics."
sentence = api.parse_input_text(text)
people = api.extract_people(sentence)
# Returns: {'Halsey': ['Admiral William Halsey', 'Halsey']}

# Extract topics and named entities
topics = api.extract_topics(sentence)

Usage Examples

Parse Multiple Lines

lines = [
    "The Battle of Midway was a turning point.",
    "Admiral Nimitz made crucial decisions."
]
sentences = api.parse_input_lines(lines)

for sentence in sentences:
    print(sentence.to_string())

Segmentation

from lingpatlab import segment_input_text

text = "First sentence. Second sentence. Third sentence."
segments = segment_input_text(text)
# Returns: ['First sentence.', 'Second sentence.', 'Third sentence.']

Access Token Details

sentence = api.parse_input_text("The quick brown fox jumps.")

for token in sentence:
    print(f"Text: {token.text}")
    print(f"POS: {token.pos}")
    print(f"Lemma: {token.normal}")
    print(f"Is WordNet: {token.is_wordnet}")
    print(f"Dependency: {token.dep}")

Data Classes

  • Sentence: Single sentence with token list
  • Sentences: Collection of sentences
  • SpacyResult: Individual token with full linguistic annotation
  • OtherInfo: Additional morphological and dependency metadata

Architecture

LingPatLab
├── tokenizer/     # Custom tokenization with Graffl
├── parser/        # spaCy integration + enhancements
├── analyzer/      # Entity extraction with pattern matching
├── segmenter/     # Sentence and paragraph segmentation
└── utils/         # WordNet, Porter stemmer, utilities

Requirements

  • Python 3.10+
  • spaCy 3.8.2
  • spaCy model: en_core_web_sm

Development

# Install with dev dependencies
pip install -e ".[linting,testing]"

# Run tests
pytest

# Run regression suite
python regression/regression_runner.py

Links

License

MIT License - see LICENSE for details.

Author

Craig Trim - craigtrim@gmail.com

More NLP articles and demos at craigtrim.com

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lingpatlab-1.1.1.tar.gz (49.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lingpatlab-1.1.1-py3-none-any.whl (73.1 kB view details)

Uploaded Python 3

File details

Details for the file lingpatlab-1.1.1.tar.gz.

File metadata

  • Download URL: lingpatlab-1.1.1.tar.gz
  • Upload date:
  • Size: 49.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.9 Darwin/24.6.0

File hashes

Hashes for lingpatlab-1.1.1.tar.gz
Algorithm Hash digest
SHA256 5e5d719bd742243ffe726bf9090a1950d67cbc595d2ab2d6d03151140dc783e2
MD5 84fdb5e0ecb4cac44723dbf575ca89e2
BLAKE2b-256 5073f2833911de27b52790e26bedda3b7b4be0ec20dbf245961c5bd63ecc0064

See more details on using hashes here.

File details

Details for the file lingpatlab-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: lingpatlab-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 73.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.11.9 Darwin/24.6.0

File hashes

Hashes for lingpatlab-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c7e3a552a0e63679d9b9ec9fb7602edea8ef51fd94cb97a020c65c21218d175e
MD5 ad444ff79634316bedd479e8c6cbd623
BLAKE2b-256 3ef80515b6b3ba9be2ed766245a209f0e7f97176450d07cb1edd0a5964e2915b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page