jaraco / inflect

Correctly generate plurals, ordinals, indefinite articles; convert numbers to words
https://pypi.org/project/inflect
MIT License
960 stars 107 forks source link

Comparing words like "farm" and "farming" #130

Open Pikamander2 opened 3 years ago

Pikamander2 commented 3 years ago

Words like "farm" and "farming" don't appear to be considered similar in any way. Is there a way to properly check whether they match, or is that out of scope?

Input:

inflect_engine = inflect.engine()

print("compare:")
print("\tfarm vs farm: \t\t" + str(inflect_engine.compare('farm', 'farm')))
print("\tfarm vs farms: \t\t" + str(inflect_engine.compare('farm', 'farms')))
print("\tfarm vs farming: \t" + str(inflect_engine.compare('farm', 'farming')))
print("\tfarm vs farmming: \t" + str(inflect_engine.compare('farm', 'farmming')))
print("\tfarm vs farmer: \t" + str(inflect_engine.compare('farm', 'farmer')))
print("\tfarm vs farmmer: \t" + str(inflect_engine.compare('farm', 'farmmer')))
print("\tfarm vs farmed: \t" + str(inflect_engine.compare('farm', 'farmed')))
print("\tfarm vs farmmed: \t" + str(inflect_engine.compare('farm', 'farmmed')))

print("\ncompare_nouns:")
print("\tfarm vs farm: \t\t" + str(inflect_engine.compare_nouns('farm', 'farm')))
print("\tfarm vs farms: \t\t" + str(inflect_engine.compare_nouns('farm', 'farms')))
print("\tfarm vs farming: \t" + str(inflect_engine.compare_nouns('farm', 'farming')))
print("\tfarm vs farmming: \t" + str(inflect_engine.compare_nouns('farm', 'farmming')))
print("\tfarm vs farmer: \t" + str(inflect_engine.compare_nouns('farm', 'farmer')))
print("\tfarm vs farmmer: \t" + str(inflect_engine.compare_nouns('farm', 'farmmer')))
print("\tfarm vs farmed: \t" + str(inflect_engine.compare_nouns('farm', 'farmed')))
print("\tfarm vs farmmed: \t" + str(inflect_engine.compare_nouns('farm', 'farmmed')))

print("\ncompare_verbs:")
print("\tfarm vs farm: \t\t" + str(inflect_engine.compare_verbs('farm', 'farm')))
print("\tfarm vs farms: \t\t" + str(inflect_engine.compare_verbs('farm', 'farms')))
print("\tfarm vs farming: \t" + str(inflect_engine.compare_verbs('farm', 'farming')))
print("\tfarm vs farmming: \t" + str(inflect_engine.compare_verbs('farm', 'farmming')))
print("\tfarm vs farmer: \t" + str(inflect_engine.compare_verbs('farm', 'farmer')))
print("\tfarm vs farmmer: \t" + str(inflect_engine.compare_verbs('farm', 'farmmer')))
print("\tfarm vs farmed: \t" + str(inflect_engine.compare_verbs('farm', 'farmed')))
print("\tfarm vs farmmed: \t" + str(inflect_engine.compare_verbs('farm', 'farmmed')))

print("\ncompare_adjs:")
print("\tfarm vs farm: \t\t" + str(inflect_engine.compare_verbs('farm', 'farm')))
print("\tfarm vs farms: \t\t" + str(inflect_engine.compare_verbs('farm', 'farms')))
print("\tfarm vs farming: \t" + str(inflect_engine.compare_verbs('farm', 'farming')))
print("\tfarm vs farmming: \t" + str(inflect_engine.compare_verbs('farm', 'farmming')))
print("\tfarm vs farmer: \t" + str(inflect_engine.compare_verbs('farm', 'farmer')))
print("\tfarm vs farmmer: \t" + str(inflect_engine.compare_verbs('farm', 'farmmer')))
print("\tfarm vs farmed: \t" + str(inflect_engine.compare_verbs('farm', 'farmed')))
print("\tfarm vs farmmed: \t" + str(inflect_engine.compare_verbs('farm', 'farmmed')))

Output:

compare:
    farm vs farm:       eq
    farm vs farms:      s:p
    farm vs farming:    False
    farm vs farmming:   False
    farm vs farmer:     False
    farm vs farmmer:    False
    farm vs farmed:     False
    farm vs farmmed:    False

compare_nouns:
    farm vs farm:       eq
    farm vs farms:      s:p
    farm vs farming:    False
    farm vs farmming:   False
    farm vs farmer:     False
    farm vs farmmer:    False
    farm vs farmed:     False
    farm vs farmmed:    False

compare_verbs:
    farm vs farm:       eq
    farm vs farms:      p:s
    farm vs farming:    False
    farm vs farmming:   False
    farm vs farmer:     False
    farm vs farmmer:    False
    farm vs farmed:     False
    farm vs farmmed:    False

compare_adjs:
    farm vs farm:       eq
    farm vs farms:      p:s
    farm vs farming:    False
    farm vs farmming:   False
    farm vs farmer:     False
    farm vs farmmer:    False
    farm vs farmed:     False
    farm vs farmmed:    False
jaraco commented 2 years ago

It seems like a perfectly reasonable thing to expect, though I don't believe it's implemented in any way. Would be happy to entertain features to implement something like that.