46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
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()
|