from names_dataset import NameDataset


# https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html
# Precision: The precision is intuitively the ability of the classifier not to label as positive a sample that is negative.
# Recall: The recall is intuitively the ability of the classifier to find all the positive samples.

def read_dict_file(filename):
    with open(filename, 'r', encoding='utf8') as r:
        lines = r.read().strip().split('\n')
    return lines


def main():
    m = NameDataset()

    names = read_dict_file('eng_dictionary/names-from-forbes-wp_users.txt')
    not_names = read_dict_file('eng_dictionary/google-10000-english-no-names.txt')
    not_names.extend(read_dict_file('eng_dictionary/1000-no-names.txt'))

    names = sorted(set(names))
    not_names = sorted(set(not_names))

    # 0 => not a name
    # 1 => name

    targets = []
    predictions = []
    for q in names:
        predictions.append(m.search_first_name(q))
        targets.append(True)

    for q in not_names:
        predictions.append(m.search_first_name(q))
        targets.append(False)

    from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score
    print('P', precision_score(y_true=targets, y_pred=predictions))
    print('R', recall_score(y_true=targets, y_pred=predictions))
    print('F', f1_score(y_true=targets, y_pred=predictions))
    print('A', accuracy_score(y_true=targets, y_pred=predictions))


if __name__ == '__main__':
    main()

from names_dataset import NameDataset


# https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html
# Precision: The precision is intuitively the ability of the classifier not to label as positive a sample that is negative.
# Recall: The recall is intuitively the ability of the classifier to find all the positive samples.

def read_dict_file(filename):
    with open(filename, 'r', encoding='utf8') as r:
        lines = r.read().strip().split('\n')
    return lines


def main():
    m = NameDataset()

    names = read_dict_file('eng_dictionary/names-from-forbes-wp_users.txt')
    not_names = read_dict_file('eng_dictionary/google-10000-english-no-names.txt')
    not_names.extend(read_dict_file('eng_dictionary/1000-no-names.txt'))

    names = sorted(set(names))
    not_names = sorted(set(not_names))

    # 0 => not a name
    # 1 => name

    targets = []
    predictions = []
    for q in names:
        predictions.append(m.search_first_name(q))
        targets.append(True)

    for q in not_names:
        predictions.append(m.search_first_name(q))
        targets.append(False)

    from sklearn.metrics import precision_score, recall_score, f1_score, accuracy_score
    print('P', precision_score(y_true=targets, y_pred=predictions))
    print('R', recall_score(y_true=targets, y_pred=predictions))
    print('F', f1_score(y_true=targets, y_pred=predictions))
    print('A', accuracy_score(y_true=targets, y_pred=predictions))


if __name__ == '__main__':
    main()

# https://scikit-learn.org/stable/modules/generated/sklearn.metrics.precision_recall_fscore_support.html # Precision: The precision is intuitively the ability of the classifier not to label as positive a sample that is negative. # Recall: The recall is intuitively the ability of the classifier to find all the positive samples. # 0 => not a name # 1 => name