import sys

import nltk
from nameparser.parser import HumanName


def get_human_names(text):
    tokens = nltk.tokenize.word_tokenize(text)
    pos = nltk.pos_tag(tokens)
    sentt = nltk.ne_chunk(pos, binary=False)
    person_list = []
    person = []
    name = ""
    for subtree in sentt.subtrees(filter=lambda t: t.label() == "PERSON"):
        for leaf in subtree.leaves():
            person.append(leaf[0])
        if len(person) > 1:  # avoid grabbing lone surnames
            for part in person:
                name += part + " "
            if name[:-1] not in person_list:
                person_list.append(name[:-1])
            name = ""
        person = []

    return person_list


text = open(sys.argv[1], "rt", encoding="utf8", errors="ignore").read()
names = get_human_names(text)
print("FIRST LAST")
for name in names:
    last_first = HumanName(name).last + ", " + HumanName(name).first
    print(last_first)
