'eat' and 'eaten' as two types or one
That depends on what you're trying to do. Are you interested in word-forms (inflected words), or lemmas (words abstracting infections, as in dictionaries)? Do you want "eaten" to count as an instance of "eat", or not?
For example, suppose you're trying to measure how often the suffix -en occurs relatively to -ed. Then you want to count things like "eaten" and "devoured" as independent. But suppose you're interested in measuring how often the verb "eat" occurs relatively to the verb "devour". Then you'll want to increment the "eat" counter—let's call it EAT—whenever you see "eaten", "eats", even "ate"; while DEVOUR will count "devoured", "devours"... To do that, whenever you see a word-form like "eats", you'll want your code to convert it to EAT. This is called lemmatization.
Note that this is orthogonal to the type/token distinction. You can count types or tokens of word-forms or lemmas, in all combinations.
How many words are there in the sentence "I eat apples because she eats apples?"
- In a sense, 7 words (word-form tokens: I, eat, apples, because, she, eats, apples)
- In another sense, 6 words (word-form types: I, eat, apples, because, she, eats)
- In another sense, 7 words again (lemma tokens: I, EAT, APPLE, BECAUSE, SHE, EAT, APPLE); but here we can measure things like "EAT occurs twice"
- And in yet another, 5 words (lemma types: I, EAT, APPLE, BECAUSE, SHE).
Which ones you want depends on what you're trying to do.