Zipfの法則をテストするために、アルファベット以外の文字でテキストファイル内のすべての単語を削除するPythonスクリプトを書く必要があります。たとえば :アルファベット以外の文字を含むすべての単語を削除する方法
[email protected] said: I've taken 2 reports to the boss
どのように進めるべき
taken reports to the boss
か?
Zipfの法則をテストするために、アルファベット以外の文字でテキストファイル内のすべての単語を削除するPythonスクリプトを書く必要があります。たとえば :アルファベット以外の文字を含むすべての単語を削除する方法
[email protected] said: I've taken 2 reports to the boss
どのように進めるべき
taken reports to the boss
か?
文字のみにマッチする正規表現を使用して(とアンダースコア)、あなたがこれを行うことができます:
import re
s = "[email protected] said: I've taken 2 reports to the boss"
# s = open('text.txt').read()
tokens = s.strip().split()
clean_tokens = [t for t in tokens if re.match(r'[^\W\d]*$', t)]
# ['taken', 'reports', 'to', 'the', 'boss']
clean_s = ' '.join(clean_tokens)
# 'taken reports to the boss'
array = string.split(' ')
result = []
for word in array
if word.isalpha()
result.append(word)
string = ' '.join(result)
はこれを試してみてくださいに役立つことがあります。
sentence = "[email protected] said: I've taken 2 reports to the boss"
words = [word for word in sentence.split() if word.isalpha()]
# ['taken', 'reports', 'to', 'the', 'boss']
result = ' '.join(words)
# taken reports to the boss
あなたは正規表現を使用することも、isalpha()などのビルド関数でPythonを使用することもできます
はisalphaを用いて、実施例()
result = ''
with open('file path') as f:
line = f.readline()
a = line.split()
for i in a:
if i.isalpha():
print(i+' ',end='')
str.join()
+読解はあなたに1つのラインのソリューション提供します:
sentence = "[email protected] said: I've taken 2 reports to the boss"
' '.join([i for i in sentence.split() if i.isalpha()])
#'taken reports to the boss'
nltk
パッケージは、テキストを扱うに特化されていて、言葉に「トークン化」のテキストに使用できるさまざまな機能を持っています
>>> sentence = "[email protected] said: I've taken 2 reports to the boss"
>>> alpha_words = [word for word in sentence.split() if word.isalpha()]
>>> print(alpha_words)
['taken', 'reports', 'to', 'the', 'boss']
あなたはその後、1つの文字列にリストを作成するjoin()を使用することができます。
RegexpTokenizer
またはword_tokenize
を少し修正して使用することができます。
最も簡単で最も簡単なものはありRegexpTokenizer
:返し
import nltk
text = "[email protected] said: I've taken 2 reports to the boss. I didn't do the other things."
result = nltk.RegexpTokenizer(r'\w+').tokenize(text)
:
`['asdf', 'gmail', 'com', 'said', 'I', 've', 'taken', '2', 'reports', 'to', 'the', 'boss', 'I', 'didn', 't', 'do', 'the', 'other', 'things']`
それともdid
とn't
へdidn't
のような最も収縮を分割することが可能であるword_tokenize
少し賢く使用することができます。
import re
import nltk
nltk.download('punkt') # You only have to do this once
def contains_letters(phrase):
return bool(re.search('[a-zA-Z]', phrase))
text = "[email protected] said: I've taken 2 reports to the boss. I didn't do the other things."
result = [word for word in nltk.word_tokenize(text) if contains_letters(word)]
:
['asdf', 'gmail.com', 'said', 'I', "'ve", 'taken', 'reports', 'to', 'the', 'boss', 'I', 'did', "n't", 'do', 'the', 'other', 'things']
は、正規表現のための仕事のように見えます。 –