Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to use a custom text file as the reference corpus #17

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
16 changes: 15 additions & 1 deletion acronym/acronym.py
Original file line number Diff line number Diff line change
@@ -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()
Expand Down Expand Up @@ -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
Expand All @@ -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()

Expand All @@ -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)
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand Down