文が実際には意味をなさないかどうかを知りたいのですが。例Pythonの文構造でテキストを分類する
Hello, how are you today? --> Correct
Hello, are today are how --> Incorrect
のためにこれまでのところ、私は次のことを行い、このコードを持っている:
1 - nltk.brownsコーパスから20の000の文章を取得します。
2 - スタンフォードPOSタガーを使用してタグのすべての文章
from nltk.corpus import brown
from nltk.tokenize import sent_tokenize, word_tokenize
from nltk.classify import accuracy
from nltk.tag import StanfordPOSTagger
from nltk import pos_tag
import string
import random
PUNC = [x for x in string.punctuation] + ["''", "``"]
def download_data(target_path):
brown_data = brown.sents()
i = 0; n = 0
with open(target_path, 'w') as data_file:
while n < 20000:
for sent in sent_tokenize(' '.join(brown_data[i])):
updated_list = [x for x in word_tokenize(sent) if x not in PUNC]
if n > 10000:
random.shuffle(updated_list)
sent = ' '.join(updated_list) + '\n'
if sent != '\n':
data_file.write(sent)
n += 1
i += 1
def get_data(data_path):
with open(data_path, 'r') as data_file:
return [x for x in data_file.readlines()]
def parse_data(data, tagger):
parsed_data = []
for i in range(len(data)):
if i > 10000:
parsed_data.append((tagger.tag(word_tokenize(data[i].replace('\n', ''))), False))
else:
parsed_data.append((tagger.tag(word_tokenize(data[i].replace('\n', ''))), True))
random.shuffle(parsed_data)
return parsed_data[:15000], parsed_data[15000:]
if __name__ == '__main__':
data_path = 'data.txt'
stanford_jar_path = 'stanford-postagger.jar'
stanford_model_path = 'models/english-bidirectional-distsim.tagger'
tagger = StanfordPOSTagger(model_filename=stanford_model_path,
path_to_jar=stanford_jar_path)
#download_data(data_path)
all_data = get_data(data_path)
train_data, test_data = parse_data(all_data, tagger)
それでは、どのように私は分類する、例えば分類器を訓練することができます - (不正データのための)最後の10の000の文章
3の単語をミックス私が提供したデータに基づいて、新しいテキストが正しいか間違っているか?
誰かより良い提案があれば、私も開いています。
このような問題を自然に解決する技術的な方法は、(a)関心のある分野のテキスト(ある種のRNN/LSTM、最先端の仕事をしたい場合) (b)良いと悪い文の既知のコレクションに対して許容可能な確率カットオフを確立し、最後に(c)バイナリのケースを分離するために新しい、目に見えない文にモデルが与える文の確率を使用する。既存の回答と同様に、おそらく最初に、これが価値あるものかどうかを確認する必要があります。ただし、クイックアンドダーティーなバイグラムまたはトライグラムのモデルを使用してください。 – fnl