# 介紹
到目前為止,我們只考慮過主要使用數字輸入的機器學習算法。如果我們想要使用文本,我們必須找到一種方法將文本轉換為數字。有很多方法可以做到這一點,我們將在本章中探討一些常用的方法。
如果我們考慮句子`TensorFlow makes machine learning easy`,我們可以按照我們觀察它們的順序將單詞轉換為數字。這將使句子成為`1 2 3 4 5`。然后,當我們看到一個新句子`machine learning is easy`時,我們可以將其翻譯為`3 4 0 5,`,表示我們沒有看到的索引為零的單詞。通過這兩個例子,我們將詞匯量限制為六個數字。對于大塊文本,我們可以選擇我們想要保留多少單詞,并且通常保留最常用的單詞,用零索引標記其他所有單詞。
如果單詞`learning`的數值為 4,單詞`makes` 的數值為 2,則自然會認為`learning`是`makes`的兩倍。由于我們不希望單詞之間存在這種類型的數字關系,我們可以假設這些數字代表的是類別,而不是關系數字。
另一個問題是這兩個句子的大小不同。我們所做的每個觀察(在這種情況下,句子)需要具有與我們希望創建的模型相同的大小輸入。為了解決這個問題,我們必須在稀疏向量中創建每個句子,如果該單詞出現在該索引中,則該特定索引中的值為 1:
| `TensorFlow` | `makes` | `machine` | `learning` | `easy` |
| --- | --- | --- | --- | --- |
| 1 | 2 | 3 | 4 | 5 |
```py
first_sentence = [0,1,1,1,1,1]
```
為了進一步解釋前面的向量,我們的詞匯由六個不同的單詞組成(五個已知單詞和一個未知單詞)。對于這些單詞中的每一個,我們要么具有零值或 1 值。零表示單詞不出現在我們的句子中,1 表示它至少出現一次。因此值為零表示該單詞不會出現,值為 1 表示它出現
| `machine` | `learning` | `is` | `easy` |
| --- | --- | --- | --- |
| 3 | 4 | 0 | 5 |
```py
second_sentence = [1,0,0,1,1,1]
```
這種方法的缺點是我們失去了任何詞序的指示。兩個句子`TensorFlow makes machine learning easy`和`machine learning makes TensorFlow easy`將產生相同的句子向量。
值得注意的是,這些向量的長度等于我們選擇的詞匯量的大小。選擇非常大的詞匯量是很常見的,因此這些句子向量可能非常稀疏。這種類型的嵌入稱為詞袋。我們將在下一節中實現這一點。
另一個缺點是單詞`is`和`TensorFlow`具有相同的數字索引值:1。有意義的是,單詞`is`可能不如單詞`TensorFlow`的出現重要。
我們將在本章中探索不同類型的嵌入,試圖解決這些問題,但首先我們將開始實現字袋算法。
- TensorFlow 入門
- 介紹
- TensorFlow 如何工作
- 聲明變量和張量
- 使用占位符和變量
- 使用矩陣
- 聲明操作符
- 實現激活函數
- 使用數據源
- 其他資源
- TensorFlow 的方式
- 介紹
- 計算圖中的操作
- 對嵌套操作分層
- 使用多個層
- 實現損失函數
- 實現反向傳播
- 使用批量和隨機訓練
- 把所有東西結合在一起
- 評估模型
- 線性回歸
- 介紹
- 使用矩陣逆方法
- 實現分解方法
- 學習 TensorFlow 線性回歸方法
- 理解線性回歸中的損失函數
- 實現 deming 回歸
- 實現套索和嶺回歸
- 實現彈性網絡回歸
- 實現邏輯回歸
- 支持向量機
- 介紹
- 使用線性 SVM
- 簡化為線性回歸
- 在 TensorFlow 中使用內核
- 實現非線性 SVM
- 實現多類 SVM
- 最近鄰方法
- 介紹
- 使用最近鄰
- 使用基于文本的距離
- 使用混合距離函數的計算
- 使用地址匹配的示例
- 使用最近鄰進行圖像識別
- 神經網絡
- 介紹
- 實現操作門
- 使用門和激活函數
- 實現單層神經網絡
- 實現不同的層
- 使用多層神經網絡
- 改進線性模型的預測
- 學習玩井字棋
- 自然語言處理
- 介紹
- 使用詞袋嵌入
- 實現 TF-IDF
- 使用 Skip-Gram 嵌入
- 使用 CBOW 嵌入
- 使用 word2vec 進行預測
- 使用 doc2vec 進行情緒分析
- 卷積神經網絡
- 介紹
- 實現簡單的 CNN
- 實現先進的 CNN
- 重新訓練現有的 CNN 模型
- 應用 StyleNet 和 NeuralStyle 項目
- 實現 DeepDream
- 循環神經網絡
- 介紹
- 為垃圾郵件預測實現 RNN
- 實現 LSTM 模型
- 堆疊多個 LSTM 層
- 創建序列到序列模型
- 訓練 Siamese RNN 相似性度量
- 將 TensorFlow 投入生產
- 介紹
- 實現單元測試
- 使用多個執行程序
- 并行化 TensorFlow
- 將 TensorFlow 投入生產
- 生產環境 TensorFlow 的一個例子
- 使用 TensorFlow 服務
- 更多 TensorFlow
- 介紹
- 可視化 TensorBoard 中的圖
- 使用遺傳算法
- 使用 k 均值聚類
- 求解常微分方程組
- 使用隨機森林
- 使用 TensorFlow 和 Keras