RNN自然語言處理訓練資料生成過程 示例

2021-10-05 20:25:52 字數 3517 閱讀 7355

第一次接觸rnn很容易被資料處理弄糊塗,這裡總結一下,總把每一步的處理結果都列印出來。

shakespeare_url =

""filepath = keras.utils.get_file(

"shakespeare.txt"

, shakespeare_url)

with

open

(filepath)

as f:

shakespeare_text = f.read()""

.join(

sorted

(set

(shakespeare_text.lower())

))tokenizer = keras.preprocessing.text.tokenizer(char_level=

true

)tokenizer.fit_on_texts(shakespeare_text)

tokenizer.texts_to_sequences(

["first"])

tokenizer.sequences_to_texts([[

20,6,

9,8,

3]])

max_id =

len(tokenizer.word_index)

# number of distinct characters

dataset_size = tokenizer.document_count # total number of characters

[encoded]

= np.array(tokenizer.texts_to_sequences(

[shakespeare_text]))

-1train_size = dataset_size *

90//

100dataset = tf.data.dataset.from_tensor_slices(encoded[

:train_size]

)

資料處理

為了方便理解,每一步處理都把結果列印出來

for _ in dataset.take(1)

:print

(_)# tf.tensor(19, shape=(), dtype=int64)

n_steps =

100window_length = n_steps +

1# target = input shifted 1 character ahead

dataset = dataset.repeat(

).window(window_length, shift=

1, drop_remainder=

true

)

for _ in dataset.take(1)

:print

(_)# <_variantdataset shapes: (), types: tf.int64>

dataset = dataset.flat_map(

lambda window: window.batch(window_length)

)

for _ in dataset.take(1)

:print

(_)

tf.tensor([19

5872

01852

53519

2310211

19381

01610

228318

11120

49150

191382

61817

0614

80141

07221

4242610104

1111

2310722

14241707

221424

2610

101958

72018

52535

192310153

130], shape=

(101,)

, dtype=int64)

batch_size =

32# dataset = dataset.shuffle(10000).batch(batch_size) 實際使用時取消注釋

dataset = dataset.batch(batch_size)

dataset = dataset.

map(

lambda windows:

(windows[:,

:-1]

, windows[:,

1:])

)

for _ in dataset.take(1)

:print

(_[0][

0])# x

tf.tensor([19

5872

01852

53519

2310211

19381

01610

228318

11120

49150

191382

61817

0614

80141

07221

4242610104

1111

2310722

14241707

221424

2610

101958

72018

52535

192310153

13], shape=

(100,)

, dtype=int64)

for _ in dataset.take(1)

:print

(_[1][

0])# y

tf.tensor([5

8720

18525

351923

1021119

3810

161022

83181

11204

915019

13826

18170

6148

01410

72214

2426

1010411

1123107

221424

170722

142426

1010195

8720

18525

351923

1015313

0], shape=

(100,)

, dtype=int64)

總結

先從資料集中用windows_size=101來分解字母

0-99(共100個)作為x,1-100(共100個)作為y

RNN自然語言處理訓練資料生成過程 示例

第一次接觸rnn很容易被資料處理弄糊塗,這裡總結一下,總把每一步的處理結果都列印出來。shakespeare url filepath keras.utils.get file shakespeare.txt shakespeare url with open filepath as f shake...

自然語言處理

自然語言處理主要步驟包括 2.詞法分析 對於英文,有詞頭 詞根 詞尾的拆分,名詞 動詞 形容詞 副詞 介詞的定性,多種詞意的選擇。比如diamond,有菱形 棒球場 鑽石3個含義,要根據應用選擇正確的意思。3.語法分析 通過語法樹或其他演算法,分析主語 謂語 賓語 定語 狀語 補語等句子元素。4.語...

自然語言處理

前言 自然語言處理 natural language processing 是計算科學領域與人工智慧領域中的乙個重要方向。它研究能實現人與計算機之間用自然語言進行有效通訊的各種理論和方法。自然語言處理是一門融語言學 電腦科學 數學於一體的科學。因此,這一領域的研究將涉及自然語言,即人們日常使用的語言...