'th'で終わる初期近代英語の単語である文字列のリストがあります。これらには、hath、appointeth、requestethなどが含まれます。これらはすべて、3人称単数のために結合されています。
はるかに大きなプロジェクトの一環として(私のコンピューターを使用して、ガルガンチュアとパンタグルエルのグーテンベルクのテキストを20世紀の英語のようなものに変換し、より読みやすくします)最後の2つまたは3つを削除したいと思いますこれらすべての単語の文字を「s」に置き換えてから、まだ近代化されていない単語に対してわずかに変更された関数を使用します。どちらも以下に含まれています。
私の主な問題は、Pythonで正しく入力することができなかったことです。この時点で、言語のその部分は本当に混乱していると思います。
これを削除する関数は次のとおりです。
from __future__ import division
import nltk, re, pprint
def ethrema(word):
if word.endswith('th'):
return word[:-2] + 's'
無関係なeを削除する関数は次のとおりです。
def ethremb(word):
if word.endswith('es'):
return word[:-2] + 's'
したがって、「abateth」と「accuseth」という単語はethremaを通過しますが、ethremb(ethrema)は通過しませんが、「abhorreth」という単語は両方を通過する必要があります。
誰かがこれを行うためのより効率的な方法を考えることができれば、私はすべての耳です。
これは、近代化が必要な単語のトークン化されたリストでこれらの関数を使用しようとした私の非常に素人っぽい試みの結果です。
>>> eth1 = [w.ethrema() for w in text]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'ethrema'
だから、ええ、それは本当にタイピングの問題です。これらは私がPythonで作成した最初の関数であり、実際のオブジェクトに適用する方法がわかりません。