diff --git a/README.md b/README.md index f1b1bf7..3a22637 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,51 @@ Process Complete ( 27) TAYER : The long nAme of Your vEry fancy pRoject ``` +*New in Version 2.0.2* + +New option to add custom corpus, such as those in other languages (German, +Russian, ...) listed [here](https://wortschatz.uni-leipzig.de/en/download/). + +``` + --corpus, -c Path to the text file (words) to read in as corpus + (default: NULL) +``` + +``` +acronym -c ~/Downloads/deu_news_2021_10K/deu_news_2021_10K-words.txt "Ich vermisse dich so sehr, aber du weißt es nicht, und ich kann nichts tun" +Collecting word corpus +Identifying matching acronyms +Process Complete +(Score) ACRONYM : Spelling +============================================================================================== +( 45) INDIANS : Ich vermisse dich so sehr, aber du weißt es Nicht, unD Ich kAnn NichtS tun +( 30) IDEEN : Ich vermisse Dich so sEhr, aber du weißt Es nicht, und ich kann nichts tuN +( 30) INDIA : Ich vermisse dich so sehr, aber du weißt es Nicht, unD Ich kAnn nichts tun +( 26) ISSUES : Ich vermiSSe dich so sehr, aber dU weißt Es nicht, und ich kann nichtS tun +( 25) IDEE : Ich vermisse Dich so sehr, aber du wEißt Es nicht, und ich kann nichts tun +( 25) IDRIS : Ich vermisse Dich so sehR, aber du weißt es nicht, und ich kann nIchtS tun +( 25) IVES : Ich Vermisse dich so sehr, aber du weißt Es nicht, und ich kann nichtS tun +( 25) INKA : Ich vermisse dich so sehr, aber du weißt es Nicht, und ich KAnn nichts tun +( 23) IHRES : IcH veRmisse dich so sehr, aber du weißt Es nicht, und ich kann nichtS tun +( 23) IRAK : Ich veRmisse dich so sehr, Aber du weißt es nicht, und ich Kann nichts tun +( 23) IRWIN : Ich veRmisse dich so sehr, aber du Weißt es nicht, und ich kann nIchts tuN +( 23) IHREN : IcH veRmisse dich so sehr, aber du weißt Es nicht, und ich kann nichts tuN +( 23) IVICA : Ich VermIsse dich so sehr, aber du weißt es nicht, und iCh kAnn nichts tun +( 23) IRRTE : Ich veRmisse dich so sehR, aber du weißT Es nicht, und ich kann nichts tun +( 20) IWAN : Ich vermisse dich so sehr, aber du Weißt es nicht, und ich kAnn nichts tuN +( 20) IHRE : IcH vermisse dich so sehr, abeR du weißt Es nicht, und ich kann nichts tun +( 18) IRRE : Ich veRmisse dich so sehr, abeR du weißt Es nicht, und ich kann nichts tun +( 18) ISAR : Ich vermiSse dich so sehr, AbeR du weißt es nicht, und ich kann nichts tun +( 18) IMERI : Ich verMissE dich so sehr, abeR du weißt es nicht, und ich kann nIchts tun +( 16) IRRER : Ich veRmisse dich so sehR, abER du weißt es nicht, und ich kann nichts tun +( 16) IHRER : IcH veRmisse dich so sehr, abER du weißt es nicht, und ich kann nichts tun +( 16) IRINA : Ich veRmIsse dich so sehr, aber du weißt es nicht, uNd ich kAnn nichts tun +( 13) IRIS : Ich veRmisse dich so sehr, aber du weißt es nicht, und ich kann nIchtS tun +( 13) IRAN : Ich veRmisse dich so sehr, aber du weißt es nicht, und ich kAnn nichts tuN +( 13) ISIN : Ich vermiSse dich so sehr, aber du weißt es nicht, und ich kann nIchts tuN +( 13) IUCN : Ich vermisse dich so sehr, aber dU weißt es nicht, und ich kann niChts tuN +``` + Acronym Scoring System *New in Version 2.0.0* ``` For each capitalized letter in the acronym: diff --git a/acronym/acronym.py b/acronym/acronym.py index 225a973..96c3422 100755 --- a/acronym/acronym.py +++ b/acronym/acronym.py @@ -1,12 +1,14 @@ #! /usr/bin/env python -__version__ = '2.0.1' +__version__ = '2.0.2' +import os import numpy as np import pandas as pd import re # import enchant import nltk +from nltk.corpus import PlaintextCorpusReader from .scoring import score_acronym try: nltk.corpus.words.ensure_loaded() @@ -150,6 +152,10 @@ def find_acronyms(s, corpus, min_length=5, max_length=7): results.index.name = 'acronym' return results.sort_values('score', ascending=False) +def validate_file(f): + if f != 'NULL' and not os.path.exists(f): + raise argparse.ArgumentTypeError("{0} does not exist".format(f)) + return f def main(): # Setup the command-line tool @@ -173,6 +179,9 @@ def main(): help='file to save results (prints to STDOUT if not given)') parser.add_argument('--strict', '-s', action='count', help='How strictly should the words be related to real English? (-s for strict, -ss for very strict)') + parser.add_argument('--corpus', '-c', default="NULL", type=validate_file, + help='Absolute path to the .txt file to read in as corpus. Overwrite the strict option') + parser.add_argument('--version', action='version', version='%(prog)s' + f'{__version__}') args = parser.parse_args() @@ -183,6 +192,11 @@ def main(): else: corpus = nltk.corpus.gutenberg + if args.corpus != 'NULL': + corpus_root = os.path.dirname(args.corpus) + corpus_file = os.path.basename(args.corpus) + corpus = PlaintextCorpusReader(corpus_root, corpus_file) + results = find_acronyms(args.name, corpus, min_length=args.min_length, max_length=args.max_length) diff --git a/setup.py b/setup.py index 65e2f37..a5945c7 100644 --- a/setup.py +++ b/setup.py @@ -59,8 +59,8 @@ def run(self): setup( name='acronym', version=find_version('acronym', '__init__.py'), - author='Ben Cook', - author_email='bacook17@gmail.com', + author='Ben Cook, Kinh Nguyen', + author_email='bacook17@gmail.com, kinh.nguyen@uni-heidelberg.de', entry_points=entry_points, packages=['acronym'], url='https://github.com/bacook17/acronym',