diff --git "a/Week13_\353\263\265\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.ipynb" "b/Week13_\353\263\265\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.ipynb" new file mode 100644 index 0000000..21c61b0 --- /dev/null +++ "b/Week13_\353\263\265\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.ipynb" @@ -0,0 +1,1457 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "6f8adeYwf6Cy" + }, + "source": [ + "# 텍스트 분석 실습 - 캐글 Mercari Price Suggestion Challenge" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "PIKFMLAgjdc0" + }, + "source": [ + "일본의 대형 온라인 쇼핑몰 Mercari 사의 제품에 대해 가격을 예측하는 과제\n", + "\n", + "- 제공 데이터 세트: 제품에 대한 여러 속성 및 제품 설명 등의 텍스트 데이터\n", + "\n", + "- 속성\n", + "\n", + " - train_id: 데이터 id\n", + " - name: 제품명\n", + " - item_condition_id: 제품 상태\n", + " - category_name: 카테고리 명\n", + " - brand_name: 브랜드 이름\n", + " - price: 제품 가격, target\n", + " - shipping: 배송비 무료 여부 (1이면 무료)\n", + " - item_description: 제품 설명\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "E9vH3wX8jnTC" + }, + "source": [ + "## 데이터 전처리" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 320 + }, + "id": "CTnQJz1vmJFG", + "outputId": "53116691-fe57-4a52-9e10-c7983e37a0ae" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(1482535, 8)\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " train_id name item_condition_id \\\n", + "0 0 MLB Cincinnati Reds T Shirt Size XL 3 \n", + "1 1 Razer BlackWidow Chroma Keyboard 3 \n", + "2 2 AVA-VIV Blouse 1 \n", + "\n", + " category_name brand_name price \\\n", + "0 Men/Tops/T-shirts NaN 10.0 \n", + "1 Electronics/Computers & Tablets/Components & P... Razer 52.0 \n", + "2 Women/Tops & Blouses/Blouse Target 10.0 \n", + "\n", + " shipping item_description \n", + "0 1 No description yet \n", + "1 0 This keyboard is in great condition and works ... \n", + "2 1 Adorable top with a hint of lace and a key hol... " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
train_idnameitem_condition_idcategory_namebrand_namepriceshippingitem_description
00MLB Cincinnati Reds T Shirt Size XL3Men/Tops/T-shirtsNaN10.01No description yet
11Razer BlackWidow Chroma Keyboard3Electronics/Computers & Tablets/Components & P...Razer52.00This keyboard is in great condition and works ...
22AVA-VIV Blouse1Women/Tops & Blouses/BlouseTarget10.01Adorable top with a hint of lace and a key hol...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "mercari_df" + } + }, + "metadata": {}, + "execution_count": 1 + } + ], + "source": [ + "from sklearn.linear_model import Ridge, LogisticRegression\n", + "from sklearn.model_selection import train_test_split, cross_val_score\n", + "from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer\n", + "import pandas as pd\n", + "\n", + "mercari_df = pd.read_csv('/content/drive/MyDrive/Euron Homework/kaggle/mercari_train.tsv', sep='\\t')\n", + "print(mercari_df.shape)\n", + "mercari_df.head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ghDoPKTcm11A", + "outputId": "6ff8ebc0-e72b-446f-cf4b-bed69e5b7612" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "\n", + "RangeIndex: 1482535 entries, 0 to 1482534\n", + "Data columns (total 8 columns):\n", + " # Column Non-Null Count Dtype \n", + "--- ------ -------------- ----- \n", + " 0 train_id 1482535 non-null int64 \n", + " 1 name 1482535 non-null object \n", + " 2 item_condition_id 1482535 non-null int64 \n", + " 3 category_name 1476208 non-null object \n", + " 4 brand_name 849853 non-null object \n", + " 5 price 1482535 non-null float64\n", + " 6 shipping 1482535 non-null int64 \n", + " 7 item_description 1482529 non-null object \n", + "dtypes: float64(1), int64(3), object(4)\n", + "memory usage: 90.5+ MB\n", + "None\n" + ] + } + ], + "source": [ + "print(mercari_df.info())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xAaqZ96jnB7_" + }, + "source": [ + "brand_name -> 매우 많은 Null 값\n", + "\n", + "category_name -> 약 6300 Null 값\n", + "\n", + "item_description -> 4 Null" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 388 + }, + "id": "YY-essjvnSgC", + "outputId": "0aa75778-b56f-4eb0-9fef-22ff4d3bdabb" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjYAAAFzCAYAAAAty0N3AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAMEBJREFUeJzt3XtYVPXe//8XIDPgYcBDgBQqZnkk8RBEB6stt+imvTPbd2rusiKtbiyVfZu6y1MnTXdaeazdnXrdu9L6XdsOanYZZlYSKokKJplpequASTBaCsh8fn/0ZV2OoAKig6vn47rmupj1ec9a7w9LZl6uWWvGzxhjBAAAYAP+vm4AAACgvhBsAACAbRBsAACAbRBsAACAbRBsAACAbRBsAACAbRBsAACAbRBsAACAbTTydQO/Jx6PR4cOHVKzZs3k5+fn63YAALhsGGN07NgxRUZGyt//7MdlCDaX0KFDhxQVFeXrNgAAuGwdOHBAV1111VnHCTaXULNmzST9tlNcLpePuwEA4PLhdrsVFRVlvZaeDcHmEqp8+8nlchFsAACog/OdysHJwwAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDYINgAAwDb4SoXLXFlZmbKzs72WxcbGyuFw+KYhAAB8iGBzmcvOztao+R8oJLK9JKnk0A+alyrFxcX5uDMAAC49go0NhES2V8voLr5uAwAAn+McGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBsEGwAAYBs+DTYVFRWaNGmSoqOjFRwcrKuvvlrPPvusjDFWjTFGkydPVuvWrRUcHKzExETt3r3baz1FRUUaNmyYXC6XQkNDlZKSouPHj3vVbN++XbfccouCgoIUFRWlmTNnVunnvffeU6dOnRQUFKSYmBitXr3aa7wmvQAAAN/xabB58cUXtXDhQs2bN0/ffvutXnzxRc2cOVNz5861ambOnKlXX31VixYtUmZmppo0aaKkpCSdPHnSqhk2bJhyc3O1du1arVy5Uhs2bNDIkSOtcbfbrX79+qlt27bKysrSrFmzNHXqVL3++utWzcaNGzV06FClpKRo69atGjhwoAYOHKicnJxa9QIAAHzI+FBycrJ56KGHvJYNGjTIDBs2zBhjjMfjMREREWbWrFnWeHFxsXE6neadd94xxhizc+dOI8ls3rzZqvn444+Nn5+fOXjwoDHGmAULFpjmzZub0tJSq2b8+PGmY8eO1v177rnHJCcne/USHx9vHnnkkRr3cj4lJSVGkikpKalRfU1kZmaaxAlvmMGvbTSDX9toEie8YTIzM+tt/QAANAQ1fQ316RGbG2+8Uenp6fruu+8kSdu2bdOXX36pAQMGSJL27t2r/Px8JSYmWo8JCQlRfHy8MjIyJEkZGRkKDQ1V7969rZrExET5+/srMzPTqunTp48cDodVk5SUpLy8PP38889Wzenbqayp3E5NejlTaWmp3G631w0AAFw8jXy58QkTJsjtdqtTp04KCAhQRUWFnn/+eQ0bNkySlJ+fL0kKDw/3elx4eLg1lp+fr7CwMK/xRo0aqUWLFl410dHRVdZROda8eXPl5+efdzvn6+VM06dP17Rp02rwmwAAAPXBp0ds3n33Xb311lt6++239c0332jp0qX6xz/+oaVLl/qyrXozceJElZSUWLcDBw74uiUAAGzNp0dsxo0bpwkTJmjIkCGSpJiYGP3444+aPn26hg8froiICElSQUGBWrdubT2uoKBAsbGxkqSIiAgVFhZ6rffUqVMqKiqyHh8REaGCggKvmsr756s5ffx8vZzJ6XTK6XTW7JcBAAAumE+P2Pz666/y9/duISAgQB6PR5IUHR2tiIgIpaenW+Nut1uZmZlKSEiQJCUkJKi4uFhZWVlWzbp16+TxeBQfH2/VbNiwQeXl5VbN2rVr1bFjRzVv3tyqOX07lTWV26lJLwAAwLd8Gmz+9Kc/6fnnn9eqVau0b98+rVixQrNnz9Zdd90lSfLz89OYMWP03HPP6cMPP9SOHTt0//33KzIyUgMHDpQkde7cWf3799eIESO0adMmffXVVxo1apSGDBmiyMhISdK9994rh8OhlJQU5ebmavny5XrllVeUlpZm9TJ69GitWbNGL730knbt2qWpU6dqy5YtGjVqVI17AQAAPnaJrtKqltvtNqNHjzZt2rQxQUFBpn379uapp57yuizb4/GYSZMmmfDwcON0Ok3fvn1NXl6e13qOHj1qhg4dapo2bWpcLpd58MEHzbFjx7xqtm3bZm6++WbjdDrNlVdeaWbMmFGln3fffddce+21xuFwmK5du5pVq1Z5jdekl3Phcm8AAOqmpq+hfsac9jG/uKjcbrdCQkJUUlIil8tVL+vctGmTnlqxQy2ju0iSju7dqefvilFcXFy9rB8AgIagpq+hfFcUAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDYINAACwDZ8Hm4MHD+qvf/2rWrZsqeDgYMXExGjLli3WuDFGkydPVuvWrRUcHKzExETt3r3bax1FRUUaNmyYXC6XQkNDlZKSouPHj3vVbN++XbfccouCgoIUFRWlmTNnVunlvffeU6dOnRQUFKSYmBitXr3aa7wmvQAAAN/xabD5+eefddNNNykwMFAff/yxdu7cqZdeeknNmze3ambOnKlXX31VixYtUmZmppo0aaKkpCSdPHnSqhk2bJhyc3O1du1arVy5Uhs2bNDIkSOtcbfbrX79+qlt27bKysrSrFmzNHXqVL3++utWzcaNGzV06FClpKRo69atGjhwoAYOHKicnJxa9QIAAHzI+ND48ePNzTfffNZxj8djIiIizKxZs6xlxcXFxul0mnfeeccYY8zOnTuNJLN582ar5uOPPzZ+fn7m4MGDxhhjFixYYJo3b25KS0u9tt2xY0fr/j333GOSk5O9th8fH28eeeSRGvdyPiUlJUaSKSkpqVF9TWRmZprECW+Ywa9tNINf22gSJ7xhMjMz6239AAA0BDV9DfXpEZsPP/xQvXv31n/+538qLCxMPXr00D//+U9rfO/evcrPz1diYqK1LCQkRPHx8crIyJAkZWRkKDQ0VL1797ZqEhMT5e/vr8zMTKumT58+cjgcVk1SUpLy8vL0888/WzWnb6eypnI7NenlTKWlpXK73V43AABw8fg02Pzwww9auHChrrnmGn3yySd67LHH9MQTT2jp0qWSpPz8fElSeHi41+PCw8Otsfz8fIWFhXmNN2rUSC1atPCqqW4dp2/jbDWnj5+vlzNNnz5dISEh1i0qKup8vxIAAHABfBpsPB6PevbsqRdeeEE9evTQyJEjNWLECC1atMiXbdWbiRMnqqSkxLodOHDA1y0BAGBrPg02rVu3VpcuXbyWde7cWfv375ckRURESJIKCgq8agoKCqyxiIgIFRYWeo2fOnVKRUVFXjXVreP0bZyt5vTx8/VyJqfTKZfL5XUDAAAXj0+DzU033aS8vDyvZd99953atm0rSYqOjlZERITS09OtcbfbrczMTCUkJEiSEhISVFxcrKysLKtm3bp18ng8io+Pt2o2bNig8vJyq2bt2rXq2LGjdQVWQkKC13Yqayq3U5NeAACAb/k02IwdO1Zff/21XnjhBX3//fd6++239frrrys1NVWS5OfnpzFjxui5557Thx9+qB07duj+++9XZGSkBg4cKOm3Izz9+/fXiBEjtGnTJn311VcaNWqUhgwZosjISEnSvffeK4fDoZSUFOXm5mr58uV65ZVXlJaWZvUyevRorVmzRi+99JJ27dqlqVOnasuWLRo1alSNewEAAD52ia7SOquPPvrIdOvWzTidTtOpUyfz+uuve417PB4zadIkEx4ebpxOp+nbt6/Jy8vzqjl69KgZOnSoadq0qXG5XObBBx80x44d86rZtm2bufnmm43T6TRXXnmlmTFjRpVe3n33XXPttdcah8NhunbtalatWlXrXs6Fy70BAKibmr6G+hljjK/D1e+F2+1WSEiISkpK6u18m02bNumpFTvUMvq3c5WO7t2p5++KUVxcXL2sHwCAhqCmr6E+/0oFAACA+kKwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwAQAAtlGnYNO+fXsdPXq0yvLi4mK1b9/+gpsCAACoizoFm3379qmioqLK8tLSUh08ePCCmwIAAKiLRrUp/vDDD62fP/nkE4WEhFj3KyoqlJ6ernbt2tVbcwAAALVRq2AzcOBASZKfn5+GDx/uNRYYGKh27drppZdeqrfmAAAAaqNWwcbj8UiSoqOjtXnzZrVq1eqiNAUAAFAXtQo2lfbu3VvffQAAAFywOgUbSUpPT1d6eroKCwutIzmV3nzzzQtuDAAAoLbqFGymTZumZ555Rr1791br1q3l5+dX330BAADUWp2CzaJFi7RkyRLdd9999d0PAABAndXpc2zKysp044031ncvAAAAF6ROwebhhx/W22+/Xd+9AAAAXJA6vRV18uRJvf766/r000913XXXKTAw0Gt89uzZ9dIcAABAbdQp2Gzfvl2xsbGSpJycHK8xTiQGAAC+Uqdg89lnn9V3HwAAABesTufYAAAANER1OmJz++23n/Mtp3Xr1tW5IQAAgLqqU7CpPL+mUnl5ubKzs5WTk1PlyzEBAAAulToFmzlz5lS7fOrUqTp+/PgFNQQAAFBX9XqOzV//+le+JwoAAPhMvQabjIwMBQUF1ecqAQAAaqxOb0UNGjTI674xRocPH9aWLVs0adKkemkMAACgtuoUbEJCQrzu+/v7q2PHjnrmmWfUr1+/emkMAACgtuoUbBYvXlzffQAAAFywOgWbSllZWfr2228lSV27dlWPHj3qpSkAAIC6qFOwKSws1JAhQ7R+/XqFhoZKkoqLi3X77bdr2bJluuKKK+qzRwAAgBqp01VRjz/+uI4dO6bc3FwVFRWpqKhIOTk5crvdeuKJJ+q7RwAAgBqp0xGbNWvW6NNPP1Xnzp2tZV26dNH8+fM5eRgAAPhMnY7YeDweBQYGVlkeGBgoj8dzwU0BAADURZ2CzR/+8AeNHj1ahw4dspYdPHhQY8eOVd++feutOQAAgNqoU7CZN2+e3G632rVrp6uvvlpXX321oqOj5Xa7NXfu3PruEQAAoEbqdI5NVFSUvvnmG3366afatWuXJKlz585KTEys1+YAAABqo1ZHbNatW6cuXbrI7XbLz89P//Ef/6HHH39cjz/+uK6//np17dpVX3zxxcXqFQAA4JxqFWxefvlljRgxQi6Xq8pYSEiIHnnkEc2ePbvemgMAAKiNWgWbbdu2qX///mcd79evn7Kysi64KQAAgLqoVbApKCio9jLvSo0aNdKRI0cuuCkAAIC6qFWwufLKK5WTk3PW8e3bt6t169YX3BQAAEBd1CrY/PGPf9SkSZN08uTJKmMnTpzQlClTdMcdd9SpkRkzZsjPz09jxoyxlp08eVKpqalq2bKlmjZtqrvvvlsFBQVej9u/f7+Sk5PVuHFjhYWFady4cTp16pRXzfr169WzZ085nU516NBBS5YsqbL9+fPnq127dgoKClJ8fLw2bdrkNV6TXgAAgG/VKtg8/fTTKioq0rXXXquZM2fqgw8+0AcffKAXX3xRHTt2VFFRkZ566qlaN7F582a99tpruu6667yWjx07Vh999JHee+89ff755zp06JAGDRpkjVdUVCg5OVllZWXauHGjli5dqiVLlmjy5MlWzd69e5WcnKzbb79d2dnZGjNmjB5++GF98sknVs3y5cuVlpamKVOm6JtvvlH37t2VlJSkwsLCGvcCAAAaAFNL+/btMwMGDDD+/v7Gz8/P+Pn5GX9/fzNgwADzww8/1HZ15tixY+aaa64xa9euNbfeeqsZPXq0McaY4uJiExgYaN577z2r9ttvvzWSTEZGhjHGmNWrVxt/f3+Tn59v1SxcuNC4XC5TWlpqjDHmySefNF27dvXa5uDBg01SUpJ1Py4uzqSmplr3KyoqTGRkpJk+fXqNe6mJkpISI8mUlJTU+DHnk5mZaRInvGEGv7bRDH5to0mc8IbJzMyst/UDANAQ1PQ1tNafPNy2bVutXr1aP/30kzIzM/X111/rp59+0urVqxUdHV3rYJWamqrk5OQqH+6XlZWl8vJyr+WdOnVSmzZtlJGRIUnKyMhQTEyMwsPDrZqkpCS53W7l5uZaNWeuOykpyVpHWVmZsrKyvGr8/f2VmJho1dSkl+qUlpbK7XZ73QAAwMVTp08elqTmzZvr+uuvv6CNL1u2TN988402b95cZSw/P18Oh0OhoaFey8PDw5Wfn2/VnB5qKscrx85V43a7deLECf3888+qqKiotqbyU5Vr0kt1pk+frmnTpp11HAAA1K86fVdUfThw4IBGjx6tt956S0FBQb5q46KaOHGiSkpKrNuBAwd83RIAALbms2CTlZWlwsJC9ezZU40aNVKjRo30+eef69VXX1WjRo0UHh6usrIyFRcXez2uoKBAERERkqSIiIgqVyZV3j9fjcvlUnBwsFq1aqWAgIBqa05fx/l6qY7T6ZTL5fK6AQCAi8dnwaZv377asWOHsrOzrVvv3r01bNgw6+fAwEClp6dbj8nLy9P+/fuVkJAgSUpISNCOHTu8rl5au3atXC6XunTpYtWcvo7Kmsp1OBwO9erVy6vG4/EoPT3dqunVq9d5ewEAAL5X53NsLlSzZs3UrVs3r2VNmjRRy5YtreUpKSlKS0tTixYt5HK59PjjjyshIUE33HCDpN++wqFLly667777NHPmTOXn5+vpp59WamqqnE6nJOnRRx/VvHnz9OSTT+qhhx7SunXr9O6772rVqlXWdtPS0jR8+HD17t1bcXFxevnll/XLL7/owQcflPTb92CdrxcAAOB7Pgs2NTFnzhz5+/vr7rvvVmlpqZKSkrRgwQJrPCAgQCtXrtRjjz2mhIQENWnSRMOHD9czzzxj1URHR2vVqlUaO3asXnnlFV111VV64403lJSUZNUMHjxYR44c0eTJk5Wfn6/Y2FitWbPG64Ti8/UCAAB8z88YY3zdxO+F2+1WSEiISkpK6u18m02bNumpFTvUMvq3t96O7t2p5++KUVxcXL2sHwCAhqCmr6EN+ogNas9Tccr6DJ9KsbGxcjgcPuoIAIBLh2BjM8cK9mvOjycV/p1HklRy6AfNSxVHcAAAvwsEGxtqFt7WemsKAIDfE59d7g0AAFDfCDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2CDYAAMA2fBpspk+fruuvv17NmjVTWFiYBg4cqLy8PK+akydPKjU1VS1btlTTpk119913q6CgwKtm//79Sk5OVuPGjRUWFqZx48bp1KlTXjXr169Xz5495XQ61aFDBy1ZsqRKP/Pnz1e7du0UFBSk+Ph4bdq0qda9AAAA3/FpsPn888+Vmpqqr7/+WmvXrlV5ebn69eunX375xaoZO3asPvroI7333nv6/PPPdejQIQ0aNMgar6ioUHJyssrKyrRx40YtXbpUS5Ys0eTJk62avXv3Kjk5Wbfffruys7M1ZswYPfzww/rkk0+smuXLlystLU1TpkzRN998o+7duyspKUmFhYU17gUAAPiWnzHG+LqJSkeOHFFYWJg+//xz9enTRyUlJbriiiv09ttv6y9/+YskadeuXercubMyMjJ0ww036OOPP9Ydd9yhQ4cOKTw8XJK0aNEijR8/XkeOHJHD4dD48eO1atUq5eTkWNsaMmSIiouLtWbNGklSfHy8rr/+es2bN0+S5PF4FBUVpccff1wTJkyoUS/n43a7FRISopKSErlcrnr5nW3atElPrdihltFdJEk/fLVSgSHhiup2vSTp6N6dev6uGMXFxdXL9gAA8IWavoY2qHNsSkpKJEktWrSQJGVlZam8vFyJiYlWTadOndSmTRtlZGRIkjIyMhQTE2OFGklKSkqS2+1Wbm6uVXP6OiprKtdRVlamrKwsrxp/f38lJiZaNTXp5UylpaVyu91eNwAAcPE0mGDj8Xg0ZswY3XTTTerWrZskKT8/Xw6HQ6GhoV614eHhys/Pt2pODzWV45Vj56pxu906ceKEfvrpJ1VUVFRbc/o6ztfLmaZPn66QkBDrFhUVVcPfBgAAqIsGE2xSU1OVk5OjZcuW+bqVejNx4kSVlJRYtwMHDvi6JQAAbK2RrxuQpFGjRmnlypXasGGDrrrqKmt5RESEysrKVFxc7HWkpKCgQBEREVbNmVcvVV6pdHrNmVcvFRQUyOVyKTg4WAEBAQoICKi25vR1nK+XMzmdTjmdzlr8JgAAwIXw6REbY4xGjRqlFStWaN26dYqOjvYa79WrlwIDA5Wenm4ty8vL0/79+5WQkCBJSkhI0I4dO7yuXlq7dq1cLpe6dOli1Zy+jsqaynU4HA716tXLq8bj8Sg9Pd2qqUkvAADAt3x6xCY1NVVvv/22PvjgAzVr1sw6VyUkJETBwcEKCQlRSkqK0tLS1KJFC7lcLj3++ONKSEiwrkLq16+funTpovvuu08zZ85Ufn6+nn76aaWmplpHSx599FHNmzdPTz75pB566CGtW7dO7777rlatWmX1kpaWpuHDh6t3796Ki4vTyy+/rF9++UUPPvig1dP5egEAAL7l02CzcOFCSdJtt93mtXzx4sV64IEHJElz5syRv7+/7r77bpWWliopKUkLFiywagMCArRy5Uo99thjSkhIUJMmTTR8+HA988wzVk10dLRWrVqlsWPH6pVXXtFVV12lN954Q0lJSVbN4MGDdeTIEU2ePFn5+fmKjY3VmjVrvE4oPl8vAADAtxrU59jYHZ9jAwBA3VyWn2MDAABwIQg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANgg2AADANhr5ugFcXJ6KU8rNza2yPDY2Vg6HwwcdAQBw8RBsbO5YwX7N+fGkwr/zWMtKDv2gealSXFycDzsDAKD+EWx+B5qFt1XL6C6+bgMAgIuOc2wAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtEGwAAIBtNPJ1A7j0PBWnlJub67UsNjZWDofDRx0BAFA/CDa/Q8cK9mvOjycV/p1HklRy6AfNS5Xi4uJ83BkAABeGYPM71Sy8rVpGd/F1GwAA1CvOsQEAALZBsAEAALZBsAEAALZBsAEAALbBycPg8m8AgG0QbMDl3wAA2yDYQBKXfwMA7IFzbAAAgG1wxAZVcM4NAOByRbCppfnz52vWrFnKz89X9+7dNXfuXNudi3LmOTc/H9it1L656tq1q1cdYQcA0NAQbGph+fLlSktL06JFixQfH6+XX35ZSUlJysvLU1hYmK/bq1enn3NTcugHzVmTYwUdqfqwQ9ABAPgawaYWZs+erREjRujBBx+UJC1atEirVq3Sm2++qQkTJvi4u4vrzJOLzww7Zwad8vJySVJgYGC192tSU5N1EKYAAKcj2NRQWVmZsrKyNHHiRGuZv7+/EhMTlZGRUe1jSktLVVpaat0vKSmRJLnd7nrr6/jx4yra961OlZ74bRuH96nRsRI5GvlXe78mNTVeR9Pm1naPFR7QtDe+VWjrLEnS0X3fKsDZVKGto6q9X5Oa893/pahAY/9yuzp16lRvv08AQP3o3bt3va6v8rXTGHPOOoJNDf3000+qqKhQeHi41/Lw8HDt2rWr2sdMnz5d06ZNq7I8Kiqqmur6tfM892tSU5d1/FjL+3V5zOn3Uz/7/6pZIwDAro4dO6aQkJCzjhNsLqKJEycqLS3Nuu/xeFRUVKSWLVvKz8+vXrbhdrsVFRWlAwcOyOVy1cs6fc1uc7LbfCT7zclu85GY0+XAbvORLu6cjDE6duyYIiMjz1lHsKmhVq1aKSAgQAUFBV7LCwoKFBERUe1jnE6nnE6n17LQ0NCL0p/L5bLNH0Ylu83JbvOR7Dcnu81HYk6XA7vNR7p4czrXkZpKfEBfDTkcDvXq1Uvp6enWMo/Ho/T0dCUkJPiwMwAAUIkjNrWQlpam4cOHq3fv3oqLi9PLL7+sX375xbpKCgAA+BbBphYGDx6sI0eOaPLkycrPz1dsbKzWrFlT5YTiS8npdGrKlClV3vK6nNltTnabj2S/OdltPhJzuhzYbT5Sw5iTnznfdVMAAACXCc6xAQAAtkGwAQAAtkGwAQAAtkGwAQAAtkGwuczNnz9f7dq1U1BQkOLj47Vp0yZft1St6dOn6/rrr1ezZs0UFhamgQMHKi8vz6vmtttuk5+fn9ft0Ucf9arZv3+/kpOT1bhxY4WFhWncuHE6derUpZyKJGnq1KlVej39O6tOnjyp1NRUtWzZUk2bNtXdd99d5cMdG8pcKrVr167KnPz8/JSamiqp4e+fDRs26E9/+pMiIyPl5+en999/32vcGKPJkyerdevWCg4OVmJionbv3u1VU1RUpGHDhsnlcik0NFQpKSk6fvy4V8327dt1yy23KCgoSFFRUZo5c6ZP5lReXq7x48crJiZGTZo0UWRkpO6//34dOnTIax3V7dcZM2Y0yDlJ0gMPPFCl3/79+3vVNKT9dL75VPc35efnp1mzZlk1DWkf1eS5ur6e39avX6+ePXvK6XSqQ4cOWrJkSf1MwuCytWzZMuNwOMybb75pcnNzzYgRI0xoaKgpKCjwdWtVJCUlmcWLF5ucnByTnZ1t/vjHP5o2bdqY48ePWzW33nqrGTFihDl8+LB1KykpscZPnTplunXrZhITE83WrVvN6tWrTatWrczEiRMv+XymTJliunbt6tXrkSNHrPFHH33UREVFmfT0dLNlyxZzww03mBtvvLFBzqVSYWGh13zWrl1rJJnPPvvMGNPw98/q1avNU089Zf79738bSWbFihVe4zNmzDAhISHm/fffN9u2bTN//vOfTXR0tDlx4oRV079/f9O9e3fz9ddfmy+++MJ06NDBDB061BovKSkx4eHhZtiwYSYnJ8e88847Jjg42Lz22muXfE7FxcUmMTHRLF++3OzatctkZGSYuLg406tXL691tG3b1jzzzDNe++30v7uGNCdjjBk+fLjp37+/V79FRUVeNQ1pP51vPqfP4/Dhw+bNN980fn5+Zs+ePVZNQ9pHNXmuro/ntx9++ME0btzYpKWlmZ07d5q5c+eagIAAs2bNmgueA8HmMhYXF2dSU1Ot+xUVFSYyMtJMnz7dh13VTGFhoZFkPv/8c2vZrbfeakaPHn3Wx6xevdr4+/ub/Px8a9nChQuNy+UypaWlF7PdKqZMmWK6d+9e7VhxcbEJDAw07733nrXs22+/NZJMRkaGMaZhzeVsRo8eba6++mrj8XiMMZfX/jnzBcbj8ZiIiAgza9Ysa1lxcbFxOp3mnXfeMcYYs3PnTiPJbN682ar5+OOPjZ+fnzl48KAxxpgFCxaY5s2be81n/PjxpmPHjhd5RlXnVJ1NmzYZSebHH3+0lrVt29bMmTPnrI9paHMaPny4ufPOO8/6mIa8n2qyj+68807zhz/8wWtZQ95HZz5X19fz25NPPmm6du3qta3BgwebpKSkC+6Zt6IuU2VlZcrKylJiYqK1zN/fX4mJicrIyPBhZzVTUlIiSWrRooXX8rfeekutWrVSt27dNHHiRP3666/WWEZGhmJiYrw+EDEpKUlut1u5ubmXpvHT7N69W5GRkWrfvr2GDRum/fv3S5KysrJUXl7utW86deqkNm3aWPumoc3lTGVlZfrXv/6lhx56yOsLWy+n/XO6vXv3Kj8/32ufhISEKD4+3mufhIaGqnfv3lZNYmKi/P39lZmZadX06dNHDofDqklKSlJeXp5+/vnnSzSbsyspKZGfn1+V76SbMWOGWrZsqR49emjWrFlebwk0xDmtX79eYWFh6tixox577DEdPXrUGruc91NBQYFWrVqllJSUKmMNdR+d+VxdX89vGRkZXuuorKmP1y8+efgy9dNPP6mioqLKpx6Hh4dr165dPuqqZjwej8aMGaObbrpJ3bp1s5bfe++9atu2rSIjI7V9+3aNHz9eeXl5+ve//y1Jys/Pr3a+lWOXUnx8vJYsWaKOHTvq8OHDmjZtmm655Rbl5OQoPz9fDoejyotLeHi41WdDmkt13n//fRUXF+uBBx6wll1O++dMlduvrr/T90lYWJjXeKNGjdSiRQuvmujo6CrrqBxr3rz5Rem/Jk6ePKnx48dr6NChXl8++MQTT6hnz55q0aKFNm7cqIkTJ+rw4cOaPXu2pIY3p/79+2vQoEGKjo7Wnj179Pe//10DBgxQRkaGAgICLuv9tHTpUjVr1kyDBg3yWt5Q91F1z9X19fx2thq3260TJ04oODi4zn0TbHDJpaamKicnR19++aXX8pEjR1o/x8TEqHXr1urbt6/27Nmjq6+++lK3eU4DBgywfr7uuusUHx+vtm3b6t13372gP8iG4n/+5380YMAARUZGWssup/3ze1NeXq577rlHxhgtXLjQaywtLc36+brrrpPD4dAjjzyi6dOnN8iP8h8yZIj1c0xMjK677jpdffXVWr9+vfr27evDzi7cm2++qWHDhikoKMhreUPdR2d7rm7oeCvqMtWqVSsFBARUORO9oKBAERERPurq/EaNGqWVK1fqs88+01VXXXXO2vj4eEnS999/L0mKiIiodr6VY74UGhqqa6+9Vt9//70iIiJUVlam4uJir5rT901DnsuPP/6oTz/9VA8//PA56y6n/VO5/XP9vURERKiwsNBr/NSpUyoqKmrQ+60y1Pz4449au3at19Ga6sTHx+vUqVPat2+fpIY5p9O1b99erVq18vp3djnupy+++EJ5eXnn/buSGsY+OttzdX09v52txuVyXfB/Dgk2lymHw6FevXopPT3dWubxeJSenq6EhAQfdlY9Y4xGjRqlFStWaN26dVUOq1YnOztbktS6dWtJUkJCgnbs2OH1pFb5RN6lS5eL0ndNHT9+XHv27FHr1q3Vq1cvBQYGeu2bvLw87d+/39o3DXkuixcvVlhYmJKTk89Zdzntn+joaEVERHjtE7fbrczMTK99UlxcrKysLKtm3bp18ng8VohLSEjQhg0bVF5ebtWsXbtWHTt29MnbG5WhZvfu3fr000/VsmXL8z4mOztb/v7+1ts5DW1OZ/q///s/HT161Ovf2eW2n6TfjoL26tVL3bt3P2+tL/fR+Z6r6+v5LSEhwWsdlTX18vp1wacfw2eWLVtmnE6nWbJkidm5c6cZOXKkCQ0N9ToTvaF47LHHTEhIiFm/fr3XJY2//vqrMcaY77//3jzzzDNmy5YtZu/eveaDDz4w7du3N3369LHWUXkJYb9+/Ux2drZZs2aNueKKK3xyifTf/vY3s379erN3717z1VdfmcTERNOqVStTWFhojPntcsg2bdqYdevWmS1btpiEhASTkJDQIOdyuoqKCtOmTRszfvx4r+WXw/45duyY2bp1q9m6dauRZGbPnm22bt1qXSE0Y8YMExoaaj744AOzfft2c+edd1Z7uXePHj1MZmam+fLLL80111zjdRlxcXGxCQ8PN/fdd5/Jyckxy5YtM40bN75ol0afa05lZWXmz3/+s7nqqqtMdna2199V5ZUnGzduNHPmzDHZ2dlmz5495l//+pe54oorzP33398g53Ts2DHz3//93yYjI8Ps3bvXfPrpp6Znz57mmmuuMSdPnrTW0ZD20/n+3Rnz2+XajRs3NgsXLqzy+Ia2j873XG1M/Ty/VV7uPW7cOPPtt9+a+fPnc7k3fjN37lzTpk0b43A4TFxcnPn666993VK1JFV7W7x4sTHGmP3795s+ffqYFi1aGKfTaTp06GDGjRvn9Tkpxhizb98+M2DAABMcHGxatWpl/va3v5ny8vJLPp/Bgweb1q1bG4fDYa688kozePBg8/3331vjJ06cMP/1X/9lmjdvbho3bmzuuusuc/jwYa91NJS5nO6TTz4xkkxeXp7X8sth/3z22WfV/hsbPny4Mea3S74nTZpkwsPDjdPpNH379q0yz6NHj5qhQ4eapk2bGpfLZR588EFz7Ngxr5pt27aZm2++2TidTnPllVeaGTNm+GROe/fuPevfVeVnD2VlZZn4+HgTEhJigoKCTOfOnc0LL7zgFRIa0px+/fVX069fP3PFFVeYwMBA07ZtWzNixIgq/1lrSPvpfP/ujDHmtddeM8HBwaa4uLjK4xvaPjrfc7Ux9ff89tlnn5nY2FjjcDhM+/btvbZxIfz+30QAAAAue5xjAwAAbINgAwAAbINgAwAAbINgAwAAbINgAwAAbINgAwAAbINgAwAAbINgA+B3bd++ffLz87O+IgLA5Y0P6APwu1ZRUaEjR46oVatWatSoka/bAXCBCDYAfrfKysrkcDh83QaAesRbUQBs47bbbtOoUaM0atQohYSEqFWrVpo0aZIq///Wrl07Pfvss7r//vvlcrk0cuTIat+Kys3N1R133CGXy6VmzZrplltu0Z49e6zxN954Q507d1ZQUJA6deqkBQsWXOqpAjgLjrsCsJWlS5cqJSVFmzZt0pYtWzRy5Ei1adNGI0aMkCT94x//0OTJkzVlypRqH3/w4EH16dNHt912m9atWyeXy6WvvvpKp06dkiS99dZbmjx5subNm6cePXpo69atGjFihJo0aaLhw4dfsnkCqB5vRQGwjdtuu02FhYXKzc2Vn5+fJGnChAn68MMPtXPnTrVr1049evTQihUrrMfs27dP0dHR2rp1q2JjY/X3v/9dy5YtU15engIDA6tso0OHDnr22Wc1dOhQa9lzzz2n1atXa+PGjRd/kgDOibeiANjKDTfcYIUaSUpISNDu3btVUVEhSerdu/c5H5+dna1bbrml2lDzyy+/aM+ePUpJSVHTpk2t23PPPef1VhUA3+GtKAC/K02aNDnneHBw8FnHjh8/Lkn65z//qfj4eK+xgICAC28OwAUj2ACwlczMTK/7X3/9ta655poaB4/rrrtOS5cuVXl5eZWjNuHh4YqMjNQPP/ygYcOG1VvPAOoPb0UBsJX9+/crLS1NeXl5eueddzR37lyNHj26xo8fNWqU3G63hgwZoi1btmj37t363//9X+Xl5UmSpk2bpunTp+vVV1/Vd999px07dmjx4sWaPXv2xZoSgFrgiA0AW7n//vt14sQJxcXFKSAgQKNHj9bIkSNr/PiWLVtq3bp1GjdunG699VYFBAQoNjZWN910kyTp4YcfVuPGjTVr1iyNGzdOTZo0UUxMjMaMGXORZgSgNrgqCoBt3HbbbYqNjdXLL7/s61YA+AhvRQEAANsg2AAAANvgrSgAAGAbHLEBAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC2QbABAAC28f8D+GWREkjyWscAAAAASUVORK5CYII=\n" + }, + "metadata": {} + } + ], + "source": [ + "# target 값 데이터 분포도 살펴보기\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "y_train_df = mercari_df['price']\n", + "plt.figure(figsize=(6,4))\n", + "sns.histplot(y_train_df, bins=100)\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "1Z82a7-snhaG" + }, + "source": [ + "price 값이 비교적 적은 가격을 가진 데이터 값에 왜곡돼 분포되어 있음" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 449 + }, + "id": "eiIkm_hjnl7_", + "outputId": "ed1fcd32-e3fa-410a-aa85-22b1ce550b5d" + }, + "outputs": [ + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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7pxIBwAAcHPhHisAAACTEKwAAABMQrACAAAwCcEKAADAJAQrAAAAkxCsAAAATEKwAgAAMAnBCgAAwCQEKwC4Ad98840sFovy8/Od3QqAJoA3rwPADaiurtb333+v9u3b8800AAQrALhelZWVcnNzc3YbAJoQLgUCwP8ZMmSIEhISlJCQIC8vL7Vv314zZ85U7X9/durUSXPnztVTTz0lT09PTZgwoc5LgQUFBXr44Yfl6empNm3aaNCgQfr666+N8ffff1/dunWTh4eHunbtqnfffbexDxVAA+G8NQBcYvXq1YqLi9O+ffuUm5urCRMmqEOHDho/frwk6e2331ZycrJmzZpV5/rfffedBg8erCFDhmj79u3y9PTU559/rosXL0qS1qxZo+TkZC1dulT33HOPDh48qPHjx6t169aKjY1ttOME0DC4FAgA/2fIkCEqLi5WQUGBLBaLJOnFF1/Uxo0b9cUXX6hTp0665557tGHDBmOdb775RsHBwTp48KBCQkL00ksvae3atSosLFTLli0v28fdd9+tuXPnaty4ccayV199VVu2bNHu3bsb/iABNCguBQLAJe677z4jVElSeHi4jh8/rurqaklSaGhovevn5+dr0KBBdYaq8vJyff3114qLi9Ptt99uTK+++qrDpUIAzReXAgHgGrRu3bre8VatWv3oWFlZmSTpvffeU1hYmMNYixYtbrw5AE5HsAKAS+zdu9dhfs+ePercufNVB5/evXtr9erVqqqquuyslZ+fnwIDA/X3v/9dMTExpvUMoOngUiAAXOLkyZNKSkpSYWGh/vu//1tLlizR5MmTr3r9hIQE2Ww2jR07Vrm5uTp+/Lj+8Ic/qLCwUJL0yiuvKCUlRYsXL9aXX36pw4cPa+XKlVqwYEFDHRKARsQZKwC4xFNPPaUffvhB/fv3V4sWLTR58mRNmDDhqtdv166dtm/frqlTp+qBBx5QixYtFBISovvvv1+S9Oyzz+q2227TW2+9palTp6p169bq1auXEhMTG+iIADQmngoEgP8zZMgQhYSEaOHChc5uBUAzxaVAAAAAkxCsAAAATMKlQAAAAJNwxgoAAMAkBCsAAACTEKwAAABMQrACAAAwCcEKAADAJAQrAAAAkxCsAAAATEKwAgAAMMn/B/DvmCxMM/2dAAAAAElFTkSuQmCC\n" + }, + "metadata": {} + } + ], + "source": [ + "# price를 로그 값으로 변환하기\n", + "import numpy as np\n", + "\n", + "y_train_df = np.log1p(y_train_df)\n", + "sns.histplot(y_train_df, bins=50)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 178 + }, + "id": "DAomjc-Kn0xJ", + "outputId": "d5763164-0b59-4e52-b737-f296279f33e1" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 2.397895\n", + "1 3.970292\n", + "2 2.397895\n", + "Name: price, dtype: float64" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
price
02.397895
13.970292
22.397895
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 5 + } + ], + "source": [ + "# 데이터 세트 price 칼럼을 원래 값에서 로그 변환된 값으로 변경하기\n", + "mercari_df['price'] = np.log1p(mercari_df['price'])\n", + "mercari_df['price'].head(3)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "v5uzrpA4oBjj", + "outputId": "d29d5501-dc85-4413-aef4-bf24bc2cef06" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Shipping 값 유형:\n", + " shipping\n", + "0 819435\n", + "1 663100\n", + "Name: count, dtype: int64\n", + "item_condition_id 값 유형:\n", + " item_condition_id\n", + "1 640549\n", + "3 432161\n", + "2 375479\n", + "4 31962\n", + "5 2384\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "print('Shipping 값 유형:\\n',mercari_df['shipping'].value_counts())\n", + "print('item_condition_id 값 유형:\\n',mercari_df['item_condition_id'].value_counts())" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "_wedXZht48aK", + "outputId": "232d3a8e-a91e-4e25-b635-ec80c9f0f140" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "np.int64(82489)" + ] + }, + "metadata": {}, + "execution_count": 7 + } + ], + "source": [ + "boolean_cond = (mercari_df['item_description']=='No description yet')\n", + "mercari_df[boolean_cond]['item_description'].count()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "sUXFRgfn7SGA", + "outputId": "cabf61d3-4354-4e7c-b420-58bb7ff38aee" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "대분류 유형 :\n", + " cat_dae\n", + "Women 664385\n", + "Beauty 207828\n", + "Kids 171689\n", + "Electronics 122690\n", + "Men 93680\n", + "Home 67871\n", + "Vintage & Collectibles 46530\n", + "Other 45351\n", + "Handmade 30842\n", + "Sports & Outdoors 25342\n", + "Other_Null 6327\n", + "Name: count, dtype: int64\n", + "중분류 개수 :\n", + " 114\n", + "소분류 개수 :\n", + " 871\n" + ] + } + ], + "source": [ + "# apply lambda에서 호출되는 대 중 소 분할 함수 생성\n", + "# 대 중 소 값을 리스트로 반환\n", + "def split_cat(category_name):\n", + " try:\n", + " return category_name.split('/')\n", + " except:\n", + " return ['Other_Null', 'Other_Null', 'Other_Null']\n", + "\n", + "# 위의 split_cat()을 apply lambda에서 호출해 대 중 소 칼럼을 mercari_df에 생성\n", + "mercari_df['cat_dae'], mercari_df['cat_jung'], mercari_df['cat_so'] = zip(*mercari_df['category_name'].apply(lambda x:split_cat(x)))\n", + "\n", + "# 대분류의 값의 유형과 건수를 살펴보고, 중분류 소분류는 값의 유형이 많으므로 분류 개수만 추출\n", + "print('대분류 유형 :\\n', mercari_df['cat_dae'].value_counts())\n", + "print('중분류 개수 :\\n', mercari_df['cat_jung'].nunique())\n", + "print('소분류 개수 :\\n', mercari_df['cat_so'].nunique())" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 429 + }, + "id": "HdAvPVhO8lPi", + "outputId": "e57fd2c0-b39a-4923-d9c4-0a9118f5ae54" + }, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "train_id 0\n", + "name 0\n", + "item_condition_id 0\n", + "category_name 0\n", + "brand_name 0\n", + "price 0\n", + "shipping 0\n", + "item_description 0\n", + "cat_dae 0\n", + "cat_jung 0\n", + "cat_so 0\n", + "dtype: int64" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
0
train_id0
name0
item_condition_id0
category_name0
brand_name0
price0
shipping0
item_description0
cat_dae0
cat_jung0
cat_so0
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 9 + } + ], + "source": [ + "mercari_df['brand_name'] = mercari_df['brand_name'].fillna(value='Other_Null')\n", + "mercari_df['category_name'] = mercari_df['category_name'].fillna(value='Other_Null')\n", + "mercari_df['item_description'] = mercari_df['item_description'].fillna(value='Other_Null')\n", + "\n", + "# 각 칼럼별로 null 값 건수 확인, 모두 0\n", + "mercari_df.isnull().sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "CMs-HG738-Zr" + }, + "source": [ + "## 피처 인코딩, 피처 벡터화" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "b5aeEjw9OGh9" + }, + "source": [ + "### 피처 관찰" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "13jFr1oO9Djp" + }, + "source": [ + "mercari price suggestion에 이용되는 데이터 세트는 문자열 칼럼이 많음\n", + "\n", + "- 피처 변환 방식: 예측 모델이 price 값이므로 회귀 모델 기반 -> 선형 회귀 모델, 회귀 트리 모델\n", + "\n", + "\n", + "- 피처 벡터화: 짧은 텍스트 -> Count 기반, 긴 텍스트 -> TD-IDF" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "GajvxkNZ9HQO", + "outputId": "3eeef7a3-fcc8-4c5d-f5ab-d94a814fc99d" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "brand name의 유형 건수: 4810\n", + "brand name sample 5건: \n", + " brand_name\n", + "Other_Null 632682\n", + "PINK 54088\n", + "Nike 54043\n", + "Victoria's Secret 48036\n", + "LuLaRoe 31024\n", + "Name: count, dtype: int64\n" + ] + } + ], + "source": [ + "print('brand name의 유형 건수: ', mercari_df['brand_name'].nunique())\n", + "print('brand name sample 5건: \\n', mercari_df['brand_name'].value_counts()[:5])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "WO4Q9B9z9uod" + }, + "source": [ + "대부분 명료한 문자열로 되어 있으므로 별도의 피처 벡터화 형태로 만들지 않고 인코딩 변환 적용\n", + "\n", + "-> 원 핫 인코딩 변환" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "B7rYj3VB93EJ", + "outputId": "30ab8628-81bc-4f6d-c0fa-2ce17eb0b29a" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "name의 종류 개수: 1225273\n", + "name sample 7건: \n", + " 0 MLB Cincinnati Reds T Shirt Size XL\n", + "1 Razer BlackWidow Chroma Keyboard\n", + "2 AVA-VIV Blouse\n", + "3 Leather Horse Statues\n", + "4 24K GOLD plated rose\n", + "5 Bundled items requested for Ruie\n", + "6 Acacia pacific tides santorini top\n", + "Name: name, dtype: object\n" + ] + } + ], + "source": [ + "print('name의 종류 개수: ', mercari_df['name'].nunique())\n", + "print('name sample 7건: \\n', mercari_df['name'][:7])" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "6fLmBy5P-Iy-" + }, + "source": [ + "개별적으로 고유한 상품명 -> Count 기반" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "I2-EN2Vq-ToK" + }, + "source": [ + "카테고리 칼럼\n", + "\n", + "shipping 칼럼은 0 1 두 가지 유형,\n", + "\n", + "item_condition_id은 1 2 3 4 5 다섯 가지 유형\n", + "\n", + "-> 모두 원 핫 인코딩" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 182 + }, + "id": "gEci2BGJ-rYd", + "outputId": "a116bab2-026a-4e86-d498-96858f883d76" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "item_description 평균 문자열 크기: 145.71139703278507\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0 No description yet\n", + "1 This keyboard is in great condition and works like it came out of the box. All of the ports are tested and work perfectly. The lights are customizable via the Razer Synapse app on your PC.\n", + "Name: item_description, dtype: object" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
item_description
0No description yet
1This keyboard is in great condition and works like it came out of the box. All of the ports are tested and work perfectly. The lights are customizable via the Razer Synapse app on your PC.
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 12 + } + ], + "source": [ + "pd.set_option('max_colwidth', 200)\n", + "\n", + "# item_description의 평균 문자열 크기\n", + "print('item_description 평균 문자열 크기:', mercari_df['item_description'].str.len().mean())\n", + "\n", + "mercari_df['item_description'][:2]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-5Gj8SYY--sS" + }, + "source": [ + "평균 문자열 크기가 크므로 TF-IDF로 변환하는 것이 좋음" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "iY1mNvKlODiW" + }, + "source": [ + "### 인코딩 및 피처 벡터화" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gn-tB-u8OKBE", + "outputId": "ec69e0f3-a2bd-4032-ff36-11d77279a59f" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "name vectorization shape: (1482535, 105757)\n", + "item_description vectorization shape: (1482535, 50000)\n" + ] + } + ], + "source": [ + "from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer\n", + "\n", + "# name 속성에 대한 피처 벡터화 변환\n", + "cnt_vec = CountVectorizer()\n", + "X_name = cnt_vec.fit_transform(mercari_df.name)\n", + "\n", + "# item_description에 대한 피처 벡터화 변환\n", + "tfidf_descp = TfidfVectorizer(max_features=50000, ngram_range=(1,3), stop_words='english')\n", + "X_descp = tfidf_descp.fit_transform(mercari_df['item_description'])\n", + "\n", + "print('name vectorization shape: ', X_name.shape)\n", + "print('item_description vectorization shape:', X_descp.shape)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "xBryzjExWi1P" + }, + "source": [ + "- max_features: (가장 높은 빈도를 가지는 것부터) 추출하는 피처 개수 제한\n", + "\n", + "- ngram_range: 묶어서 피처 추출하는 ngram 범위\n", + "\n", + "CountVectorizer, TfidfVectorizer가 fit_transform()을 통해 반환하는 데이터를 희소 행렬 형태이다. 희소 행렬 객체 변수인 X_name과 X_descp, 다른 인코딩된 데이터들을 새로 결합해 새로운 데이터 세트를 구성해야 함.\n", + "\n", + "-> 인코딩 대상 칼럼들을 희소 행렬 형태로 인코딩한 뒤 결합하기\n", + "\n", + "![image.png](data:image/png;base64,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)\n", + "\n", + "**LabelBinarizer**: 희소 행렬 형태의 원-핫 인코딩 변환 지원 (파라미터 sparse_out=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "id": "bGd6uGfOYArt" + }, + "outputs": [], + "source": [ + "from sklearn.preprocessing import LabelBinarizer\n", + "\n", + "# brand_name, item_condition_id, shipping 각 피처들을 희소 행렬 원-핫 인코딩 변환\n", + "lb_brand_name = LabelBinarizer(sparse_output=True)\n", + "X_brand = lb_brand_name.fit_transform(mercari_df['brand_name'])\n", + "lb_item_cond_id = LabelBinarizer(sparse_output=True)\n", + "X_item_cond_id = lb_brand_name.fit_transform(mercari_df['item_condition_id'])\n", + "lb_shipping = LabelBinarizer(sparse_output=True)\n", + "X_shipping = lb_brand_name.fit_transform(mercari_df['shipping'])\n", + "\n", + "# 카테고리들 각 피처들도 희소 행렬 원핫인코딩\n", + "lb_cat_dae = LabelBinarizer(sparse_output=True)\n", + "X_cat_dae = lb_brand_name.fit_transform(mercari_df['cat_dae'])\n", + "lb_cat_jung = LabelBinarizer(sparse_output=True)\n", + "X_cat_jung = lb_brand_name.fit_transform(mercari_df['cat_jung'])\n", + "lb_cat_so = LabelBinarizer(sparse_output=True)\n", + "X_cat_so = lb_brand_name.fit_transform(mercari_df['cat_so'])" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "U2iS_XkZZLmE", + "outputId": "bf84c910-e7ea-42bd-d249-6c23e2c07705" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " \n", + "X_brand_shape:(1482535, 4810), X_item_cond_id shape:(1482535, 5)\n", + "X_shipping shape:(1482535, 1), X_cat_dae shape:(1482535, 11)\n", + "X_cat_jung shape:(1482535, 114), X_cat_so shape:(1482535, 871)\n" + ] + } + ], + "source": [ + "print(type(X_brand), type(X_item_cond_id), type(X_shipping))\n", + "print('X_brand_shape:{0}, X_item_cond_id shape:{1}'.format(X_brand.shape, X_item_cond_id.shape))\n", + "print('X_shipping shape:{0}, X_cat_dae shape:{1}'.format(X_shipping.shape, X_cat_dae.shape))\n", + "print('X_cat_jung shape:{0}, X_cat_so shape:{1}'.format(X_cat_jung.shape, X_cat_so.shape))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "S572CFN9ZR8-" + }, + "source": [ + "피처 벡터화 변환된 데이터와 희소 인코딩 변환된 데이터 세트를 hstack()을 이용해 모두 결합하기\n", + "\n", + "⚠️ 결합된 데이터가 메모리를 많이 잡아먹으므로 del과 gc.collect()로 결합 데이터를 메모리에서 삭제하고, 그때그때 다시 결합하는 방식을 사용" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "IWtPh6__hqoO", + "outputId": "0a684967-bce8-4643-978f-0818bdbd1f20" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + " (1482535, 161569)\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "0" + ] + }, + "metadata": {}, + "execution_count": 16 + } + ], + "source": [ + "from scipy.sparse import hstack\n", + "import gc\n", + "\n", + "sparse_matrix_list = (X_name, X_descp, X_brand, X_item_cond_id, X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "\n", + "# hstack 함수를 이용해 인코딩과 벡터화를 수행한 데이터 세트 모두 결합\n", + "X_features_sparse = hstack(sparse_matrix_list).tocsr()\n", + "print(type(X_features_sparse), X_features_sparse.shape)\n", + "\n", + "# 삭제\n", + "del X_features_sparse\n", + "gc.collect()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "el5E3tFli3gl" + }, + "source": [ + "## 릿지 회귀 모델 구축 및 평가" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "tSYKQSKPi96N" + }, + "source": [ + "평가 지표; 캐글의 RMSLE(Root Mean Square Loarithmic Error) 방식\n", + "\n", + "= 오류 값에 로그를 취함\n", + "\n", + "![image.png](data:image/png;base64,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)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "KanPqa3Mj_7D" + }, + "source": [ + "원본 데이터의 price 칼럼 값은 왜곡된 데이터 분포를 가지고 있으므로, 로그 값으로 변환해 정규 분포 형태로 유도\n", + "\n", + "즉, 예측값도 로그로 변환된 값일 것이므로 로그의 역변환인 지수 변환 수행해 원복" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "id": "AhHFKQ3QkOK1" + }, + "outputs": [], + "source": [ + "def rmsle(y, y_pred):\n", + " # 언더플로우, 오버플로우 막기 위해 log1p로 rmsle 계산\n", + " return np.sqrt(np.mean(np.power(np.log1p(y)-np.log1p(y_pred), 2)))\n", + "\n", + "def evaluate_org_price(y_test, preds):\n", + " # 원본 데이터 원복\n", + " preds_exmpm = np.expm1(preds)\n", + " y_test_exmpm = np.expm1(y_test)\n", + "\n", + " # rmsle로 RMSLE 값 추출\n", + " rmsle_result = rmsle(y_test_exmpm, preds_exmpm)\n", + " return rmsle_result" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "id": "UeVRH5yPlFoQ" + }, + "outputs": [], + "source": [ + "import gc\n", + "from scipy.sparse import hstack\n", + "\n", + "def model_train_predict(model, matrix_list):\n", + " # scipy.sparse 모듈의 hstack을 이용해 희소 행렬 결합\n", + " X = hstack(matrix_list).tocsr()\n", + "\n", + " X_train, X_test, y_train, y_test = train_test_split(X, mercari_df['price'], test_size=0.2, random_state=156)\n", + "\n", + " # 모델 학습 및 예측\n", + " model.fit(X_train, y_train)\n", + " preds = model.predict(X_test)\n", + "\n", + " del X, X_train, X_test, y_train\n", + " gc.collect()\n", + "\n", + " return preds, y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Axfj-rzBl6q1" + }, + "source": [ + "릿지를 이용해 mercari price의 회귀 예측 수행\n", + "\n", + "하기 전에\n", + "\n", + "merari 상품 가격 예측에 item_description과 같은 텍스트 형태의 속성이 얼마나 영향을 미치는지 알아보기" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FMlQ9SPdmoul", + "outputId": "97126fd0-6859-4b75-fc72-ce6c6839ba72" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "item description을 제외했을 때 rmsle 값: 0.4983990938999374\n", + "item description을 포함한 rmsle 값: 0.4680432471796771\n" + ] + } + ], + "source": [ + "linear_model = Ridge(solver = \"lsqr\", fit_intercept=False)\n", + "\n", + "sparse_matrix_list = (X_name, X_brand, X_item_cond_id, X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "linear_preds, y_test = model_train_predict(model=linear_model, matrix_list=sparse_matrix_list)\n", + "print('item description을 제외했을 때 rmsle 값: ', evaluate_org_price(y_test, linear_preds))\n", + "\n", + "sparse_matrix_list = (X_descp, X_name, X_brand, X_item_cond_id, X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "linear_preds, y_test = model_train_predict(model=linear_model, matrix_list=sparse_matrix_list)\n", + "print('item description을 포함한 rmsle 값: ', evaluate_org_price(y_test, linear_preds))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "3VEebaTJnrZe" + }, + "source": [ + "item description을 포함했을 때 rmsle 값이 많이 감소함 -> 영향력 O" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rjSAlUx1oqGW" + }, + "source": [ + "## LightGBM 회귀 모델 구축과 앙상블을 이용한 최종 예측 평가" + ] + }, + { + "cell_type": "code", + "source": [ + "import lightgbm" + ], + "metadata": { + "id": "isBS_Qa7Nwrr" + }, + "execution_count": 22, + "outputs": [] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5NaST4tDouC-", + "outputId": "6f64c37f-994b-4f23-8a3e-cc56aaf9bae7" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", + " warnings.warn(\n", + "Exception ignored on calling ctypes callback function: \n", + "Traceback (most recent call last):\n", + " File \"/usr/local/lib/python3.11/dist-packages/lightgbm/basic.py\", line 257, in _log_callback\n", + " def _log_callback(msg: bytes) -> None:\n", + " \n", + "KeyboardInterrupt: \n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Auto-choosing row-wise multi-threading, the overhead of testing was 4102.286814 seconds.\n", + "You can set `force_row_wise=true` to remove the overhead.\n", + "And if memory is not enough, you can set `force_col_wise=true`.\n", + "[LightGBM] [Info] Total Bins 1068323\n", + "[LightGBM] [Info] Number of data points in the train set: 1186028, number of used features: 65338\n", + "[LightGBM] [Info] Start training from score 2.979514\n" + ] + }, + { + "output_type": "stream", + "name": "stderr", + "text": [ + "/usr/local/lib/python3.11/dist-packages/sklearn/utils/deprecation.py:151: FutureWarning: 'force_all_finite' was renamed to 'ensure_all_finite' in 1.6 and will be removed in 1.8.\n", + " warnings.warn(\n" + ] + }, + { + "output_type": "stream", + "name": "stdout", + "text": [ + "LightGBM rmsle 값: 0.4563962127849484\n" + ] + } + ], + "source": [ + "from lightgbm import LGBMRegressor\n", + "\n", + "sparse_matrix_list = (X_descp, X_name, X_brand, X_item_cond_id, X_shipping, X_cat_dae, X_cat_jung, X_cat_so)\n", + "\n", + "lgbm_model = LGBMRegressor(n_estimators=200, learning_rate=0.5, num_leaves=125, random_state=156)\n", + "lgbm_preds, y_test = model_train_predict(model = lgbm_model, matrix_list=sparse_matrix_list)\n", + "print('LightGBM rmsle 값: ', evaluate_org_price(y_test, lgbm_preds))" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "id": "W0Yp1MyTgKR1", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "05bc3a56-68b2-4489-e7ee-56f8ffff1389" + }, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "LightGBM과 Ridge를 ensemble한 최종 rmsle 값: 0.4467272727321774\n" + ] + } + ], + "source": [ + "preds = lgbm_preds * 0.45 + linear_preds*0.55\n", + "print('LightGBM과 Ridge를 ensemble한 최종 rmsle 값: ', evaluate_org_price(y_test, preds))" + ] + } + ], + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git "a/Week13_\354\230\210\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.ipynb" "b/Week13_\354\230\210\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.ipynb" new file mode 100644 index 0000000..9c99a39 --- /dev/null +++ "b/Week13_\354\230\210\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.ipynb" @@ -0,0 +1,5203 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + }, + "language_info": { + "name": "python" + } + }, + "cells": [ + { + "cell_type": "markdown", + "source": [ + "# LDA 토픽 모델링" + ], + "metadata": { + "id": "Uu3vYUQk_FXw" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.datasets import fetch_20newsgroups\n", + "from sklearn.feature_extraction.text import CountVectorizer\n", + "from sklearn.decomposition import LatentDirichletAllocation\n", + "\n", + "# 모터사이클 야구 그래픽스 윈도우즈 중동 기독교 전자공학 의학 8개 주제\n", + "cats = ['rec.motorcycles', 'rec.sport.baseball', 'comp.graphics', 'comp.windows.x',\n", + " 'talk.politics.mideast', 'soc.religion.christian', 'sci.electronics', 'sci.med']\n", + "\n", + "# 위에서 cats 변수로 기재된 카테고리만 추출\n", + "news_df = fetch_20newsgroups(subset='all', remove=('headers', 'footers,', 'quotes'), categories=cats, random_state=0)\n", + "\n", + "# LDA는 count 기반 벡터화만 적용\n", + "count_vect = CountVectorizer(max_df=0.95, max_features=1000, min_df=2, stop_words='english', ngram_range=(1,2))\n", + "feat_vect = count_vect.fit_transform(news_df.data)\n", + "print('CountVectorizer Shape: feat_vect.shape')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "eK51HWwKAJLl", + "outputId": "12052c60-91c9-4932-8191-aa38e8bf6c0c" + }, + "execution_count": 2, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "CountVectorizer Shape: feat_vect.shape\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "피처 벡터화된 데이터 세트 기반으로 LDA 토픽 모델링 숳애" + ], + "metadata": { + "id": "GJXJtsiLBH69" + } + }, + { + "cell_type": "code", + "source": [ + "lda = LatentDirichletAllocation(n_components=8, random_state=0) # 8개 토픽\n", + "lda.fit(feat_vect)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 80 + }, + "id": "2p-hOXifBqmm", + "outputId": "44b6148d-4971-4cdc-d0ed-dde0ef91f426" + }, + "execution_count": 3, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "LatentDirichletAllocation(n_components=8, random_state=0)" + ], + "text/html": [ + "
LatentDirichletAllocation(n_components=8, random_state=0)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" + ] + }, + "metadata": {}, + "execution_count": 3 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "components_: 개별 토픽별로 각 word 피처가 얼마나 많이 그 토픽에 할당됐는지에 대한 수치" + ], + "metadata": { + "id": "fyApf5CtBx_I" + } + }, + { + "cell_type": "code", + "source": [ + "print(lda.components_.shape)\n", + "lda.components_" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "fGNq1nSxB4VY", + "outputId": "938edaf0-1ad8-46e7-b438-a5c305d533de" + }, + "execution_count": 4, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(8, 1000)\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "array([[3.29546885e+01, 2.70761849e+01, 1.30294110e-01, ...,\n", + " 1.51500608e+02, 3.31548277e-01, 1.57000496e+01],\n", + " [1.25229027e-01, 1.25105371e-01, 3.00168184e+00, ...,\n", + " 5.59513781e+01, 1.25112368e-01, 3.42127017e+00],\n", + " [2.52018786e+02, 4.55535223e+02, 1.58433624e+02, ...,\n", + " 3.91139565e+00, 3.40486211e+02, 4.03733833e+01],\n", + " ...,\n", + " [1.25103961e-01, 2.57159776e+01, 1.25007328e-01, ...,\n", + " 9.55978879e+01, 1.25190395e-01, 9.71056815e+01],\n", + " [1.25247419e-01, 4.45044716e+01, 1.25469477e-01, ...,\n", + " 8.75773231e+01, 2.14939117e+01, 6.46088823e+01],\n", + " [1.86017544e+01, 1.17928680e+01, 1.44278690e+01, ...,\n", + " 2.58114144e+01, 8.77020115e+00, 1.70435587e+01]])" + ] + }, + "metadata": {}, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "8개 토픽별로 1000개의 word 피처가 해당 토픽별로 연관도 값을 가지고 있음\n", + "\n", + "ex) components_array[0, 10] 값\n", + "\n", + "-> Topic #0에 대해서 피처 벡터화된 행렬에서 10번째 칼럼에 해당하는 피처를 연관도 값으로 가짐" + ], + "metadata": { + "id": "519gZnhsB8Yi" + } + }, + { + "cell_type": "markdown", + "source": [ + "토픽별로 연관도가 높은 순으로 Word를 나열하는 함수" + ], + "metadata": { + "id": "sUggP-4oKPsB" + } + }, + { + "cell_type": "code", + "source": [ + "def display_topics(model, feature_names, no_top_words):\n", + " for topic_index, topic in enumerate(model.components_):\n", + " print('Topic #', topic_index)\n", + "\n", + " # components_array에서 가장 값이 큰 순으로 정렬했을 때, 그 값의 array 인덱스를 반환\n", + " topic_word_indexed = topic.argsort()[::-1]\n", + " top_indexes = topic_word_indexed[:no_top_words]\n", + "\n", + " # top_indexed 대상인 인덱스 별ㄹ feature_names에 해당하는 word feature 추출 후 join으로 concat\n", + " feature_concat = ' '.join([feature_names[i] for i in top_indexes])\n", + " print(feature_concat)\n", + "\n", + "# CountVectorizer 객체 내의 전체 word 명칭을 get_features_names()로 추출\n", + "feature_names = count_vect.get_feature_names_out() # 버전 이슈로 _out으로 변경됨\n", + "\n", + "# 토픽별 가장 연관도가 높은 word를 15개만 추출\n", + "display_topics(lda, feature_names, 15)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "FmxUcxvxKSwy", + "outputId": "5e136e52-6fe4-4935-dedd-85f61d823392" + }, + "execution_count": 5, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Topic # 0\n", + "like don just know use good ve time think used make way bike work problem\n", + "Topic # 1\n", + "edu thanks com mail know university does email information ca computer like help phone fax\n", + "Topic # 2\n", + "armenian turkish armenians new armenia 000 turks turkey university people 10 soviet york new york 1993\n", + "Topic # 3\n", + "god people jesus church think believe christ does christian say christians bible faith sin know\n", + "Topic # 4\n", + "dos program file image use output software windows data dos dos entry pc line number graphics\n", + "Topic # 5\n", + "people said israel know just don jews israeli did like didn say right jewish time\n", + "Topic # 6\n", + "year game think good don team time games just hit better baseball dod like 10\n", + "Topic # 7\n", + "edu file window available jpeg image ftp server graphics use version pub display files color\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "토픽 #0: 아마도 모터사이클?, 일반적인 단어들\n", + "\n", + "토픽 #1: 전자공학 같지만 명확하지 X\n", + "\n", + "토픽 #2: 명확한 중동 영역 주제어\n", + "\n", + "토픽 #3: 완전 기독교\n", + "\n", + "토픽 #4: 윈도우즈\n", + "\n", + "토픽 #5: 기독교..\n", + "\n", + "토픽 #6: 야구 + 일반적인 단어들\n", + "\n", + "토픽 #7: 그래픽스" + ], + "metadata": { + "id": "WQAaZuxrLaLo" + } + }, + { + "cell_type": "markdown", + "source": [ + "# 문서 군집화" + ], + "metadata": { + "id": "WQtI_8bPObx4" + } + }, + { + "cell_type": "markdown", + "source": [ + "## Opinion Review 데이터 세트로 문서 군집화 수행" + ], + "metadata": { + "id": "7Go1CN44OeIQ" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 데이터 로딩\n", + "자동차 브랜드 & 전자 제품 & 호텔 서비스 등에 대한 리뷰 내용" + ], + "metadata": { + "id": "O5MiKqcsPNNX" + } + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "import glob, os\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "pd.set_option('display.max_colwidth', 700)\n", + "\n", + "# 여러 개의 파일을 DataFrame으로 로딩할 것임\n", + "path = r'/content/drive/MyDrive/Euron Homework/topics'\n", + "# path로 지정한 디렉터리 밑에 있는 모든 .data 파일들의 파일명을 리스트로 취합\n", + "all_files = glob.glob(os.path.join(path, \"*.data\"))\n", + "filename_list = []\n", + "opinion_text = []\n", + "\n", + "# 개별 파일들의 파일명은 filename_list 리스트로 취합\n", + "# 파일 내용: DataFrame 로딩 후 string 변환 -> opinion_text 리스트로 취합\n", + "for file_ in all_files:\n", + " df = pd.read_table(file_, index_col=None, header=0, encoding='latin1')\n", + "\n", + " # 절대경로로 주어진 파일명 가공\n", + " filename_ = file_.split('/')[-1]\n", + " filename = filename_.split('.')[0]\n", + "\n", + " # 리스트에 추가\n", + " filename_list.append(filename)\n", + " opinion_text.append(df.to_string())\n", + "\n", + "# df 로딩\n", + "document_df = pd.DataFrame({'filename':filename_list, 'opinion_text':opinion_text})\n", + "document_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 553 + }, + "id": "B-0uAiMnQWWW", + "outputId": "c5806cbf-aff7-4ba5-95b5-f92a3f725b1f" + }, + "execution_count": 6, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "0 fonts_amazon_kindle \n", + "1 features_windows7 \n", + "2 speed_garmin_nuvi_255W_gps \n", + "3 updates_garmin_nuvi_255W_gps \n", + "4 bathroom_bestwestern_hotel_sfo \n", + "\n", + " opinion_text \n", + "0 Being able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ... \n", + "1 I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ... \n", + "2 Another feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ... \n", + "3 Another thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe... \n", + "4 The room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ... " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_text
0fonts_amazon_kindleBeing able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ...
1features_windows7I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ...
2speed_garmin_nuvi_255W_gpsAnother feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ...
3updates_garmin_nuvi_255W_gpsAnother thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe...
4bathroom_bestwestern_hotel_sfoThe room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ...
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "document_df", + "summary": "{\n \"name\": \"document_df\",\n \"rows\": 51,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \"keyboard_netbook_1005ha\",\n \"screen_garmin_nuvi_255W_gps\",\n \"free_bestwestern_hotel_sfo\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \" , I think the new keyboard rivals the great hp mini keyboards .\\n0 Since the battery life difference is minimum, the only reason to upgrade would be to get the better keyboard .\\n1 The keyboard is now as good as the HP and Samsung netbooks .\\n2 The keyboards are 92% the size of those found on a standard computer and the machines run a little hot .\\n3 The keyboard is large enough to accommodate touch typing with ease .\\n4 At home I now have my Asus connected to my desktop's keyboard and monitor .\\n5 However, since I do a lot of word processing, the keyboard and the touchpad buttons were a real concern .\\n6 The keyboard has a responsive feel and the larger keys along with the oversize right shift key are a real plus .\\n7 The light weight, the battery life, the keyboard, the non, protruding removable battery, the bright screen, the track pad disable button and general ease of use makes it hard to beat .\\n8 Battery life continues to hold up and the keyboard is a true godsend with its full size keys .\\n9 , Tiny and light the slightly smaller than standard keyboard is no problem for me to use, , and I'm a touch typist, , the keys themselves are a good size and feel good .\\n10 The keyboard is quite nice and I have very large hands and I make a lot fewer mistakes .\\n11 The fit and finish are very good, no gaps and I like the keyboard layout .\\n12 The keyboard is easy to use .\\n13 The keyboard has a decent feel but seems more cramped than the 1005ha .\\n14 Definitely the best looking netbook, and possibly the best keyboard .\\n15 The keyboard is not quite perfect, the screen doesn't tilt back as far as I'd like, slightly higher resolution in the screen would be nice a new model not yet available in the U .\\n16 The keyboard, though slightly smaller than standard, is a pleasure to use .\\n17 The keyboard is terrific, solid feel and full size .\\n18 The touchpad feels great, the boot up was fast, keyboard feels comfortable, and the screen is good .\\n19 The keyboard is REALLY easy to get used to, possibly the best netbook keyboard I've ever used .\\n20 It was easy to set up, and I really liked the comfort of the mouse and keyboard .\\n21 The machine has the most comfortable small keyboard I've ever used, because the keys are flat and so the surfaces that your fingerpads touch are actually about the size of standard keyboards .\\n22 The keyboard and mouse are my biggest concern for the tiny computer .\\n23 The keyboard is functional, but takes a little bit of getting use to .\\n24 Build quality is great, love the touchpad and keyboard .\\n25 Keyboard is not as sturdy as I would like has some minor flex\\n26 keyboard is actually a pleasure to use inspite of small size\\n27 Well, I'm a touch typist and very particular about my keyboard .\\n28 The only comparable keyboards I found were those on much larger laptops .\\n29 My keyboard also seems a bit noisy .\\n30 However, two weeks in, the keyboard would sporadically stop working .\\n31 The build quality is very good, and the keyboard, though small, is surprisingly comfortable and has good key response .\\n32 The keyboard is generous for a netbook, but I still have some trouble typing on it .\\n33 They keyboard takes some getting used to, but even still, I could not write a novel on this .\\n34 Keyboard feels funny at first, but you get used to it .\\n35 The keyboard isn't quite full sized of course, but very easy to get used to .\\n36 I have briefly tried typing on a number of netbooks since last fall, and this is the only one that had a decent keyboard just big enough to accommodate my hands and not result in multiple typing errors .\\n37 I have large hands and with a little time on the keyboard I'm breezing through word processing jobs .\\n38 I found the ASUS keyboard comfortable to type quickly it is touch, typeable after brief acclimation .\\n39 The keyboard, more than 90% standard size, is just large enough .\\n40 I picked it up right away due to the battery life, keyboard and sleek design .\\n41 With such a great battery life, keyboard and responsive touch pad, there's really no other model that can hold a candle to this puppy .\\n42 I think the most important thing on these small netbooks is the keyboard, and this one feels very good .\\n43 I notice the tighter keyboard spacing, but it seems easy to type on, yielding no more typing errors than my bad typing normally yields .\\n44 , keyboard feels well laid out\\n45 The keyboard is easy to type on , the battery life is great, and I've found that I really do like the touch pad with all its features .\\n46 Speaking of which, the keyboard's relatively large size , at 92% of the size of a normal one , writing longer texts on it is no problem .\\n47 While I still like the keyboard style of the Toshiba better, the EEE PC has some features that are pretty awesome !\\n48 The keyboard doesn't have separation between the keys .\\n49 I also noticed within the second or third day of use that the keyboard was loose .\\n50 I found if I pushed down and slid upward in the upper left corner, the keyboard moved up slightly and clicked into place .\\n51 It did not seem to affect the use of the keyboard but it was a slight distraction .\\n52 The most noticeable difference is the screen and keyboard functionality .\\n53 The cover and screen are glossy and it has a 92% keyboard which is plenty comfortable .\\n54 Speaking of typing, the keyboard is great, almost full size .\\n55 The keyboard really works for me .\\n56 It is smaller than a standard keyboard, but after a day or two I got used to it and now I can type pretty fast with few mistakes .\\n57 I also needed Web connectivity for research, a screen with a low squint factor and a keyboard that wasn't too cramped .\\n58 I goosed up the memory to 2G and stuffed a 8G SD memory board in the slot on the right side of the keyboard .\\n59 The keyboard is just fine for my bony fingers & cruise, on writing speed .\\n60 And it goes in that bag wrapped in the white paper plastic bag it was originally boxed up in, with another piece of packing plastic between the keyboard and the screen .\\n61 1 The keyboard takes a bit of getting used to .\\n62 It's 92% the size of a regular keyboard, and my somewhat larger, than, average male hands have adapted completely in a few weeks .\\n63 Small keyboard with some double, function keys\\n64 The keyboard is also combortable and not too small .\\n65 It is a bit of a pain to unplug and replug power, monitor, LAN, wireless mouse keyboard, hard drive back, up and PDA cable, but not the end of the world .\\n66 4 And finally the keyboard doesn't stay fastened down at the top it would seem like an easy fix, I've noted it for repair twice and I still have the same problem .\\n67 1 keyboard still floats 2the screen goes to a solid blue screen either right after starting or after it sits a while .\\n68 Great battery life, decent sized screen, and the keyboard was large enough to be comfortable to type on .\\n69 Controls for these functions are right on the keyboard .\\n70 The keyboard is very useable, I type on it as well as any desktop keyboard this was a must, have feature .\\n71 The ASUS is comfortable , the keyboard is normal sized, so I don't make any adjustment when typing .\\n72 The keyboard took about 20 minutes to get used to, but i'm now typing on it very comfortably .\\n73 only 10, inch screen, small keyboard and no CD, ROM .\\n74 My advice is to visit a store to personally try the keyboard and screen size .\\n75 This was actually the one of the things I feared most, but turns out the keyboard is set up real nice .\\n76 I like the keyboard, I like the speakers .\\n77 Keyboard is more than big enough for regular typing and keys have a nice tactile feel .\\n78 My favorite part about the Eee PC physically is the keyboard mousepad combo .\\n79 The keyboard is excellent and even though only 92% the size of a full size keyboard, feels like the big one .\\n80 I like the feel of the keyboard, and the touchpad software control makes it easy to use without getting in my way while I type .\\n81 The keyboard is just the right size .\\n82 I am 5'10 with large hands and have no problem using the keyboard .\\n83 Yes, screen is small, video card is weak, and keyboard is cramped, but this is the case for other netbooks at this price point .\\n84 Actually the keyboard is much better in my opinion .\\n85 Has a very long battery life, runs videos and multimedia smoothly without issues, fast loading, very usable keyboard, stylish sleek design, decent pricing for what you get\\n86 Due to the size of netbooks and a wide screen format, the screen should have been designed to be able to rotate all the way back to inline with the keyboard .\\n87 to use, , clunky mouse buttons, a too, small keyboard .\\n88 The keyboard is extremely comfortable to use .\\n89 The keyboard is comfortable to type on, it's not too small so that you have to consistently keep looking at the keyboard to find out which key you are going to press .\\n90 The 10, inch screen is bright and has good color, and the keyboard is only slightly smaller than a regular one .\\n91 Performance is good, screen very good, wireless very good, numerous USB ports, and keyboard layout is excellent .\\n92 It boots up quickly, especially after getting rid of the extra asus software that auto, boots at startup, its battery life is phenomenal, the screen is clear and easy to read, the keyboard is comfortable to type on and feels natural .\\n93 Like how they made keyboard as large as possible unlike Qosmio 17 which is almost same size .\\n94 The selling point, for me, was the keyboard .\\n95 I wanted to purchase a netbook with a keyboard as close to a lap or desktop as possible .\\n96 Keyboard is actually nice to work on connected to my wireless network immediately light, weight of course .\\n97 Luckily, there's a keyboard shortcut to toggle it on off .\\n98 It's 90% size keyboard doesn't take too long to get used to .\\n99 First and foremost, most companies , get the design of the keyboard completely wrong .\\n100 I was also extremely impressed at how comfortable the keyboard is .\\n101 I love the feel of typing on it, and have not had any issues transferring from a regular, sized keyboard to a smaller one .\\n102 My biggest concern was how I would handle a smaller keyboard .\\n103 For regular typing, the keyboard has worked well .\\n104 I have had a freeze up twice where the mouse and keyboard stop responding .\\n105 The keyboard feel is good but the touchpad is hard and being small I get confused with the side scroll area easily .\\n106 The keyboard is great and the screen looks good .\\n107 For this extra amount, I was looking for the larger screen, the longer battery life and the keyboard ergonomics .\\n108 Productivity wasn't a huge benefit, but I did feel the keyboard was a major selling point for the extra dough .\\n109 I have more productivity flow on a conventional laptop with a full sized screen and keyboard .\\n110 I was afraid I wouldn't like the small keyboard, but it's really easy to type on .\\n111 Excellent keyboard for typing .\\n112 I also have the Eeepc 900, but I can't stand typing on that keyboard , I've typed on this one for 10 hour work training sessions without issue .\\n113 The keyboard and buttons felt good for a small netbook .\\n114 The keyboard is smallish, but not ridiculously small .\\n115 The keyboard is surprisingly good for someone like me with big hands .\\n116 No keyboard issues on any of them, no running hot, although the adapters do get really warm .\\n117 Windows started crashing, freezing, unable to boot, keyboard or touchpad not working, etc .\\n118 The keyboard is very easy to adjust to and is very comfortable to use .\\n119 The keyboard is nearly full size and very comfortable to type on for hours .\\n120 The keyboard is awesome since it looks like regular one with a large backspace, and two shifts .\\n121 I like the zoom in out feature on the keyboard !\\n122 The keyboard is only slightly smaller than a regular one, so it's very comfortable .\\n123 I mostly find that when I make typos, it's not because of the keyboard, it's because of the smallness of the screen, , I just can't see what I'm doing as well as a laptop .\\n124 A lot of netbooks on the market have mangled the keyboard in one way or another such that if you are a touch typist, you find yourself hitting the wrong key often, which is frustrating .\",\n \" It is easy to read and when touching the screen it works great !\\n0 and zoom out buttons on the 255w to the same side of the screen which makes it a bit easier .\\n1 On the 750 the zoom buttons are on opposite sides of the screen .\\n2 The screen is easily readable in the sun, and I love how it automatically dims to 20% at night .\\n3 Display is excellent , the layout of information on the screen is very good showing upcoming turns at the top, your speed, the local speed limit and the estimated time of arrival at the bottom .\\n4 The text to speech is great for not having to look down at the screen endangering yourself and others on the road and after the voice updates the Garmin put out for the 255W the scratchiness and robotic sounding voice became crisp and very audible .\\n5 The widescreen is a plus and I highly recommend it, even though it has the wide screen you can stick it in your back pocket which can be conveniently used for walking directions .\\n6 The screen is very bright and easy to see with direct sunlight and at night time .\\n7 If you are looking for a simple wide screen GPS the Nuvi 255W is the right choice .\\n8 One of my favorite features on the Garmin 255W is the odometer screen that will allow you to track all sorts of data about your long car trip .\\n9 It tells you on the main screen your estimated time of arrival which will change depending upon your stops and speed .\\n10 Additionally, I find the data in the odometer screen to be fasscinating .\\n11 Another screen at the touch of the button will show you the turn by turn directions coming up so that you can plan even better, especially in areas that you have just enough familiarity to be considered dangerous .\\n12 , 255w has an arrow at the top of the screen that shows the direction of the next turn .\\n13 To make things worse, in the the Main st may not be on the screen on the default scale .\\n14 The way map is displayed is good and the wide screen helps to see more map area .\\n15 Other than the Magellan's screen being an inch smaller , but really noticeable , the Magellan did not have text to voice, and often would take a much longer route even though we told it to take freeways .\\n16 The most noticeable thing is that the screen is much easier to read, and that the text to voice is extremely valuable and much better than a beep just as you need to turn .\\n17 On the other hand, after about a week of using the Garmin, it seems to understand where we are, and now POIs as far as 25 miles away will show up when the screen is touched .\\n18 The screen is easy to see, the voice tells you where you are and it's very accurate .\\n19 I switched to the Nuvi 255W after the screen on my Nuvi 760 got cracked .\\n20 > Same screen size as the other 4 .\\n21 > Better screen touch sensitivity\\n22 > More responsive that my old 760 , plus a better looking screen\\n23 The home screen shows four options :\\n24 Any time you are viewing the map, you can zoom in or out by tapping the appropriate icon located on the top right of the screen .\\n25 I have noticed that when I see a speed limit sign on the road, indicating a change of speed limit for that road, the Nuvi is not far behind in changing the speed limit on the screen .\\n26 If you missed the spoken directions, you can look at the top of the screen for written directions .\\n27 So, although the Nuvi doesn't verbalize those directions, I can look at the screen to see the exit I need to take .\\n28 The screen is bright and the maps are generally good .\\n29 3 Love the touch screen technology\\n30 There were a few times I drove under overpasses on the interstate and no intersection was shown on the screen .\\n31 Typical of Garmin, the product works well, wide screen is very nice .\\n32 Functionally the only slight problem is that on my unit I have to press pretty hard on the screen if I want to 'drag' the map .\\n33 The extra features of the 255W over lesser models that I find highly beneficial include spoken street names and the wide screen display .\\n34 Now the only screen I get says the system software is missing .\\n35 I use the suction cup mount because I like to keep the screen in my frame of vision without turning my head, but I make sure to take it with me when I park my car .\\n36 From the map screen it's but 2 presses on the large and accessible touchscreen to get a Where Am I ?\\n37 I also realize that even if I crashed differently I had been injured in other ways but the car were still drivable that it's but 1 press on the screen to get direction to the nearest emergency services from that lovely screen that told me where I was .\\n38 I just wish the screen is larger .\\n39 1 Wanted a wide screen model, its difficult to see the 4 \\n40 4 It has built in picture viewer and a card slot, so insert your memory card, browse to picture browser and you don't need a PC, has enough big screen to enjoy\\n41 Its for wide screen models and it fits perfectly my 255w with a flap that covers it screen .\\n42 I chose a hard type of case that zippered the screen in, as I didn't want the possibility of it sliding out .\\n43 Also, it's hard to view the screen when it's super sunny outside, but the text to speech capability is an advantage .\\n44 Before I get into the specifics of my review, let me offer one important piece of advice , , BUY A CARRYING CASE to protect the screen !\\n45 These gadgets have sensitive touchscreen menus, and I think the fact that I didn't protect the screen on my last GPS is the reason it died after only 14 months .\\n46 I had a Nuvi 205 and I really liked it but I wanted a bigger screen .\\n47 It's an emergency location feature , you can tap the screen to get your latitude and longitude .\\n48 BUT, in direct sunlight, the screen is difficult to see in my convertible .\\n49 Not only the voice gives turn, by, turn instructions, the map on the screen also has a thick purple line indicating the route ahead .\\n50 The local speed limit is shown on left side of the screen with current driving speed shown at the bottom of the screen .\\n51 One thing that would be useful is putting a mute button on the screen available at all times .\\n52 Having the speed limit show up on the screen was also great since I was in unfamiliar territory .\\n53 I watched the screen several times as I passed by a speed limit sign, and it would change almost immediately as I passed by !\\n54 I was afraid the screen on one of these things would be too small for me to see, and the last thing I need would be futzing around with a GPS screen when I'm on the road if I wanted to do that, I could drive and read a map !\\n55 The screen is huge next to some of the units I saw .\\n56 I have no problems reading it in bright sunlight, but with the voice to text, the screen is almost unnecessary .\\n57 It has a very clear and bright screen and is loaded with multiple useful features .\\n58 It has a great screen presentation that is very easy to read when it is mounted on your windshield .\\n59 3 inch screen was a slight improvement over my former 3 .\\n60 The screen is crystal clear and the voice in it is nice and loud .\\n61 The screen is large so that it is easily read while you're driving .\\n62 The wide screen and spoken street names are a must .\\n63 If I'm listening to loud music, I won't be able to hear the exact words but I can hear it vaguely and that is a cue that I should glance down at the top of the screen and see what my next move is .\\n64 There should be an external volume control on the unit, or at least volume control from the main map screen .\\n65 The posted speed limit on the screen is pretty cool too .\\n66 Also, push every icon on every screen you see .\\n67 In both instances this could have been avoided if I had just paid attention to the screen which showed the correct road highlighted .\\n68 The dashboard mount keeps the unit easily within reach so that you can safely touch the screen while driving .\\n69 Was thinking about buying the 265WT for only $45 more, but decided I didn't need bluetooth or the Traffic Feature which gives you flash advertisements on the screen .\\n70 Those are the only 2 differences between the 2 models and I'd rather not have flash advertisements coming up on my GPS screen at random .\\n71 3 Inch screen is awesome to look at both during the day and at night .\\n72 The Voice Prompted turn by turn directions make it easy to get from one place to another without having to look up at the GPS, but of course you also get turn, by, turn directions on the GPS with a touch of the screen .\\n73 The screen is clear and the instructions are good though again if you have a lot of exits or turns all in the same spot you have to be careful to just listen to the voice and watch the road or you can miss the turn .\\n74 The screen is big enough to view maps, street names, etc easily .\\n75 Sufficiently sensitive touch screen\\n76 Now if Garmin would put a compass on the main screen always pointing to the north, it would be perfect .\\n77 We love the spoken street names and the wide screen .\\n78 The 255w does not have a convenient volume control you must go through the menu system on the screen .\\n79 The screen size makes it really easy to see without being a safety hazard .\\n80 The background of the screen turns black when it's nighttime .\\n81 The user must get into a few layers of the menu to access the touch screen volume control .\\n82 Screen is clear and maps are pretty easy to follow .\\n83 I look at the direction line at the top bar of the screen to make sure I understand what the verbal instructions were .\\n84 3 inches large screen is large enough for you to see the details of the map yet not distracting you from driving .\\n85 3 inches screen and steady performance .\\n86 , Its a touch screen and a 4 .\\n87 3 wide screen also speak out the streets name and tells you when or how far to turn\\n88 , Also very quick and I mean quick reroute when you miss a turn plus smooth update position when moving, not choppy on the screen .\\n89 , EASY to read day or night you can also adjust the screen brightness\\n90 One down side is the lack of volume button on the unit you have to adjust the volume form the tool menu on the screen which can be a challenge if you want to change the volume when you are driving .\\n91 After lots of internet research, we settled on the Garmin 255W for the text, to, speech and wide screen features .\\n92 When attached to the PC, the screen just indicates the connection .\\n93 The wide screen is important because of the better keyboard .\\n94 We started with a non, touch screen which was great, then we updated to the streetpilot C330 which was a dream .\\n95 After ample research I selected the Nuvi 255W for it's abundant features, wider screen and voice communication .\\n96 Looking at comparable units, this one seems to have more features and a larger screen .\\n97 I can even see the screen without my reading glasses .\\n98 It speaks the street names if you touch the car on the screen it lets you know lat and long .\\n99 Screen size is good and I didn't want one that had blue tooth and a lot of 'extras' I wouldn't use .\\n100 With either unit, the text on the screen usually tells you what you need to know .\\n101 I've only used the wide screen versions, so I can't compare, but I personally wouldn't want to go to a smaller screen .\\n102 The Garmin nuvi 255W I bought through Amazon has a dead red pixel which is always on and what is worse is that the position of that red dot is right in the middle of the screen .\",\n \" The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n0 They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n1 The service was good, very friendly staff and we loved the free wine reception each night .\\n2 has free wireless and help you with transportation needs .\\n3 The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n4 They have a happy hour where you have a couple offree drinks between 5 and 6 and this gives you a chance to meet other travellers .\\n5 free wifi and happy hour wine every afternoon !\\n6 The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\n7 We were also told of the free wine reception at 5pm, great idea as it meant you could chat to your fellow guests .\\n8 Free internet access and Happy Hour every afternoon .\\n9 As said before, the free wine reception in the evening is Two Buck Chuck, drinkable, but certainly not anything to write home about .\\n10 The free wine tasting every night was a wonderful extra and welcomed relaxment in between a long day of sightseeing and evenings out .\\n11 That and also the free coffee and tea every morning were little extras that we felt made you feel like a welcomed guest and that they are going out of their way to make the hotel special .\\n12 Free internet in the lobby but none of any sort in the rooms .\\n13 The hotel lobby was lovely, real fire, large comfy chairs and free internet access in the corner .\\n14 There is a concierge, also free wine and appetizers in the afternoon .\\n15 00 for an adult with free entrance for shildren , , we were both fascinated for nearly two hours and it was not crowded .\\n16 We went down for the free wine reception, and had a great time .\\n17 The hotel has one computer available with free internet .\\n18 And free wifi throughout the hotel which worked flawlessly .\\n19 The room also has free wireless which I've read other hotels nearby don't .\\n20 Free Wifi in your room, and the free wine reception in the evenings was great .\\n21 The free happy hour really made the visit extra special , we met so many wonderful people during our 7 day stay this way .\\n22 I personally appreciated the free internet service in the hotel .\\n23 Free internet and a computer for use in the lobby was helpful .\\n24 The manager's cocktail hour was a nice touch, and the free coffee in the morning was also nice though I had to ask both mornings for hot chocolate to be brought out for the kids, and the advertised biscotti was no where to be found .\\n25 I didn't get to take advantage of the free coffee in the morning, but my husband and I did go to the 5pm, 6pm cocktail hour, which we enjoyed .\\n26 Coffee and biscotti were available in reception every morning free of charge or if you preferred, there was a restaurant in the hotel that served breakfast or a Starbucks round the corner .\\n27 This hotel offers a lot , a great location, great staff, free wine tastings and morning coffee .\\n28 I booked a standard king room and was up graded to a premier king free of charge upon our arrival .\\n29 This is a hassle, free place to stay with a dog .\\n30 The hotel had free coffee and drinks everyday and free access to wireless internet .\\n31 Free coffee and biscotti in the morning helped get the GF out of bed .\\n32 00 found most other places closing so it was Hobsons choiceThe best part of the stay were the free wine and eats in the lounge arond 17 :\\n33 The free wine and nibbles served between 5pm and 6pm were a lovely touch .\\n34 We did however take advantage of the free coffee and biscotti that was offered every morning in the lobby .\\n35 No bar as such in the hotel but they have free wine tasting every day at 5p .\\n36 The free wine beer and coffee hot chocolate biscotti is a wonderful touch and we took full advantage of it .\\n37 The late afternoon free wine reception was a really nice touch and we enjoyed this very much .\\n38 Although we didn't use it, there was free Internet access in the room .\\n39 l also enjoyed the morning coffee in the lobby and the free wine .\\n40 The lobby area was really pleasant and the free wine gets you talking to other guests .\\n41 The free morning hot cocoa and coffee was nice before our daily excursions .\\n42 The afternoon wine and cheese was a nice bonus as was the free Internet .\\n43 We were surprised and delighted when, on arrival, we were given tokens for free continental breakasts .\\n44 The reception area is compact and during the free evening wine sampling gets quite busy .\\n45 The free morning coffee is also well appreciated and attended .\\n46 The free drinks are great if you and like the feeling of getting something for nothing .\\n47 The free coffee and biscotti in the morning kept us going until breakfast .\\n48 Evening wine hour from 5, 6 was also good , free wine and nibbles and a chance to talk to other guests about places to visit , eat etc .\\n49 Very clean, get a glass of wine free between 5 6pm in the lobby .\\n50 Free high speed wireless Internet access, which in San Francisco most always has a charge .\\n51 With this hotel we received a free 1 hour tour cruise around Alcatraz and down to the Golden Gate Bridge .\\n52 You also get 2 free transportation passes each day of your stay that we used for the trolley systems .\\n53 And remember the MUNI passes were free !\\n54 The free drinks held every evening are welcoming after a long day out .\\n55 It was freezing cold in the room and I don't think it warmed up even with the heat on until the next day .\\n56 If you have any other questions please feel free to msg me and I will do my best to answer your questions .\\n57 The wine tasting in the afternoon made available from the manager was a really nice touch as was the free tea and coffee in the lobby in the morning which got you off to a great start for the day .\\n58 The hotel has free wireless .\\n59 At 5 o'clock every evening in the hotel lobby there is a free wine reception for an hour .\\n60 Nothing disappointed us about our stay and we didn\\u0092t even take advantage of the free wine tasting between 5, 6pm .\\n61 We did however make use of the free tea and coffee when we had an early start .\\n62 Earily evening free wine tasting .\\n63 In the morning free great coffee and biscotti in the lobby, with carry, out cups .\\n64 Another great thing about the hotel is that every day, they offer wine and beer from 5, 6pm for free for all hotel guests .\\n65 Then we picked up the free lobby coffee and the WSJ and the USA Today newspapers, thus having a cheap breakfast .\\n66 We particularly enjoyed the nightly 'manager's reception' when wine and nibbles are freely available !\\n67 The nightly free wine reception is a great way to meet people and find out what is worth seeing and what is not .\\n68 Free Wireless internet access .\\n69 Speaking of parking, you're going to have to pay and it's going to have to be valet service, as there are no free self park lots that are part of the hotel .\\n70 The staff were friendly and the free coffee and biscoti each morning and wine at 6pm each evening were occassions when one could meet other guests .\\n71 The hotel provides free hot drinks and biscotti in the mornings, which was good quality but why ?\\n72 Free wine and mingle from 5 to 6pm .\\n73 It really does save if you can get a deal with free parking, but the fee is not out of line .\\n74 There was a free wine tasting that the hotel put on that we were, unfortunately, too jet, lagged to participate in .\\n75 Every evening 5pm to 6pm, guests are invited to have free wine in the reception area and there is free coffee there every morning .\\n76 The hotel's evening wine hour and morning's biscotti hour also distinguish the property as a cut above, and our group, which has stayed at many a biz hotel, had no problem whatsoever in fact, a courtesy upgrade got us a fine meeting space with free internet, which even impressed our boss .\\n77 The great thing for us was the free parking .\\n78 We stayed at the BW Tuscan Inn only because they were offering a great winter deal , $99 for a room with king, size bed and free parking .\\n79 Overall, we would recommend this place to friends, especially if they are able to get a good discount and free parking .\\n80 Oh,yes, free coffee and biscotti for breakfast, and wine in the afternoon !\\n81 There's free coffee, teas at breakfast time with little biscotti and, best of all, from 5 til 6pm you get a free wine 'tasting' reception which, as long as you don't take the p\\n82 No free internet here though .\\n83 but it's great to get a couple of free drinks .\\n84 Excellent free wine reception in evening .\\n85 And free NEw York Times to go with it .\\n86 00 free wine and beer very popular and nice if you happen to catch it before you go out to dinner .\\n87 Being the lushes that we are, my wife and I took full advantage of the free happy hour, arriving promptly at five, and not leaving until six .\\n88 Stayed for two nights and really enjoyed the free wine in the evenings and biscotti and coffee and or wide range of teas in the morning .\\n89 Refrigerator, minibar, free wifi, iron board, hairdryer, down comforters and pillow top beds .\\n90 The lobby has a wine tasting for free between 5, 6pm each night and you meet dozens of really nice people from all over the world .\\n91 and the free coffee tea and beer wine daily was very nice and allowed for a cozy feeling among the quests .\\n92 The hotel offers free wifi to all guests who have a laptop .\\n93 Free coffee in the morning, free beer and wine in the afternoon, what more could you ask for ?\\n94 Free coffee in the lobby in the mornings is nice .\\n95 The free wine in the lounge each evening was very nice, and given with good grace , even the fourth glass !\\n96 Coffee and hot chocolate were also available free from 6am each morning, although there was also a coffee maker in the room .\\n97 The only criticism I have is that there was no safe in the room, although safety deposit boxes were available free of charge in reception .\\n98 The rest of the immediate neighborhood seemed safe and nondescript, and largely free of the homeless and the street people that are in evidence elsewhere in this costly city .\\n99 A complete disappointment , from losing the reservation made through Best Western toll, free number to charging our credit card for someone elses stay 3 WEEKS AFTER WE LEFT !\\n100 Dont let the " free" wine and biscotti fool you .\\n101 The free beer, wine etc and snacks on an afternoon was a lovely touch and helped you swap tips and chat to other guests .\\n102 The coffee and biscotti offered in the morning is a good way to start the day, and the free wine hour from 5 to 6 is very pleasant, although we were so busy we only attended twice .\\n103 Great free " coffee and" in the morning and a very pleasant afternoon complimentary wine .\\n104 I had read a prior review complaning about the fact the hotel had run out of the " free" morning biscotti's as promised to quests .\\n105 We also always look for free wifi .\\n106 Internet access was not free .\\n107 Free wireless internet in the room , fantastic !\\n108 Best feature was the freebie drinks in reception from 5, 6pm .\\n109 Free internet use in the reception area was a great touch .\\n110 Guests actually talk to one another during morning coffee, and the free hour of wine at 5 pm .\\n111 In the lobby they have free coffee, tea and biscotti everyday and have wine and snacks from 5 p to 6 p daily .\\n112 The concierge even gave us a pair of City Passes someone had turned in with four more days still on them, so we rode everywhere for free .\\n113 The afternoon wine beer was a great idea, as was the free morning tea cofee .\\n114 The use of the foyer for free drinks between 5, 6pm was popular especially with fellow Brits !\\n115 Free coffee and biscotti in the morning is a nice touch but we never made it back in time for free beer and wine from 5, 6pm .\\n116 The free morning coffee and evening wine reception were both good opportunities to meet other guests .\\n117 Morning coffee and biscotti was a nice touch as well as the all you can drink free wine hour in the evening .\\n118 Parking was $26 day , free valet with on and off priv .\\n119 The hotel was of a good standard, big clean rooms, decent bathroom and the free wine reception in the evening was an added bonus .\\n120 The staff are friendly and there is one computer for internet access as well as free coffee and biscuits in the afternoon .\\n121 During that time there is a very nice and knowledgable gentlemen who offers free chair massages .\\n122 It's location is fantastic if you want to get to the Ballpark, to the cable car, on and off the freeway, to the wharf, etc .\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 6 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## TF-IDF 형태로 피처 벡터화" + ], + "metadata": { + "id": "TR7f3kDHR0R9" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install nltk" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0cmVlfEKecKT", + "outputId": "d34531bc-adf3-405b-acc2-f4e1b44b3a02" + }, + "execution_count": 7, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Requirement already satisfied: nltk in /usr/local/lib/python3.11/dist-packages (3.9.1)\n", + "Requirement already satisfied: click in /usr/local/lib/python3.11/dist-packages (from nltk) (8.2.1)\n", + "Requirement already satisfied: joblib in /usr/local/lib/python3.11/dist-packages (from nltk) (1.5.0)\n", + "Requirement already satisfied: regex>=2021.8.3 in /usr/local/lib/python3.11/dist-packages (from nltk) (2024.11.6)\n", + "Requirement already satisfied: tqdm in /usr/local/lib/python3.11/dist-packages (from nltk) (4.67.1)\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# TfidfVectorizer의 tokenizer 인자로 사용될 lemmatization 어근 변환 함수 설정\n", + "from nltk.stem import WordNetLemmatizer\n", + "import nltk\n", + "nltk.download('punkt_tab')\n", + "nltk.download('wordnet')\n", + "import string\n", + "\n", + "remove_punct_dict = dict((ord(punct), None) for punct in string.punctuation)\n", + "lemmar = WordNetLemmatizer()\n", + "\n", + "# 입력으로 들어온 token 단어들에 대해서 lemmatization 어근 변환\n", + "\n", + "def LemTokens(tokens):\n", + " return [lemmar.lemmatize(token) for token in tokens]\n", + "\n", + "# TfidfVectorizer 객체 생성 시 tokenizer 인자로 해당 함수를 설정하여 lemmatization 적용\n", + "# 입력으로 문장 받아서 stop words 제거 -> 소문자 변환 -> 단어 토큰화 -> lemmatization 어근 변환\n", + "def LemNormalize(text):\n", + " return LemTokens(nltk.word_tokenize(text.lower().translate(remove_punct_dict)))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "EFZH6pUXcti-", + "outputId": "c46c2ee5-b346-4b17-81a8-59c76232949c" + }, + "execution_count": 8, + "outputs": [ + { + "output_type": "stream", + "name": "stderr", + "text": [ + "[nltk_data] Downloading package punkt_tab to /root/nltk_data...\n", + "[nltk_data] Unzipping tokenizers/punkt_tab.zip.\n", + "[nltk_data] Downloading package wordnet to /root/nltk_data...\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "\n", + "tfidf_vect = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english', ngram_range=(1,2), min_df=0.05, max_df=0.85)\n", + "\n", + "# opinion_text 칼럼값으로 feature vectorization 수행\n", + "feature_vect = tfidf_vect.fit_transform(document_df['opinion_text'])" + ], + "metadata": { + "id": "XzDvItAzcDXm" + }, + "execution_count": 9, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## 군집화 수행" + ], + "metadata": { + "id": "vwOWp7yzdj7m" + } + }, + { + "cell_type": "code", + "source": [ + "# 문서 유형 - 전자제품, 자동차, 호텔\n", + "from sklearn.cluster import KMeans\n", + "\n", + "# 5개 집합으로 군집화 수행\n", + "km_cluster = KMeans(n_clusters=5, max_iter=10000, random_state=0)\n", + "km_cluster.fit(feature_vect)\n", + "cluster_label = km_cluster.labels_ # 군집화된 label\n", + "cluster_centers = km_cluster.cluster_centers_ # 각 군집 별 center 좌표 값" + ], + "metadata": { + "id": "QOG-aZ1te49f" + }, + "execution_count": 10, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "document_df['cluster_label'] = cluster_label\n", + "document_df.head()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 727 + }, + "id": "e6yzfLK_fZeo", + "outputId": "b4de15ba-2c1c-4c84-9c6a-b2600cfe60a2" + }, + "execution_count": 11, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "0 fonts_amazon_kindle \n", + "1 features_windows7 \n", + "2 speed_garmin_nuvi_255W_gps \n", + "3 updates_garmin_nuvi_255W_gps \n", + "4 bathroom_bestwestern_hotel_sfo \n", + "\n", + " opinion_text \\\n", + "0 Being able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ... \n", + "1 I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ... \n", + "2 Another feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ... \n", + "3 Another thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe... \n", + "4 The room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ... \n", + "\n", + " cluster_label \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "4 1 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
0fonts_amazon_kindleBeing able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ...0
1features_windows7I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ...0
2speed_garmin_nuvi_255W_gpsAnother feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ...0
3updates_garmin_nuvi_255W_gpsAnother thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe...0
4bathroom_bestwestern_hotel_sfoThe room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ...1
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "document_df", + "summary": "{\n \"name\": \"document_df\",\n \"rows\": 51,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \"keyboard_netbook_1005ha\",\n \"screen_garmin_nuvi_255W_gps\",\n \"free_bestwestern_hotel_sfo\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \" , I think the new keyboard rivals the great hp mini keyboards .\\n0 Since the battery life difference is minimum, the only reason to upgrade would be to get the better keyboard .\\n1 The keyboard is now as good as the HP and Samsung netbooks .\\n2 The keyboards are 92% the size of those found on a standard computer and the machines run a little hot .\\n3 The keyboard is large enough to accommodate touch typing with ease .\\n4 At home I now have my Asus connected to my desktop's keyboard and monitor .\\n5 However, since I do a lot of word processing, the keyboard and the touchpad buttons were a real concern .\\n6 The keyboard has a responsive feel and the larger keys along with the oversize right shift key are a real plus .\\n7 The light weight, the battery life, the keyboard, the non, protruding removable battery, the bright screen, the track pad disable button and general ease of use makes it hard to beat .\\n8 Battery life continues to hold up and the keyboard is a true godsend with its full size keys .\\n9 , Tiny and light the slightly smaller than standard keyboard is no problem for me to use, , and I'm a touch typist, , the keys themselves are a good size and feel good .\\n10 The keyboard is quite nice and I have very large hands and I make a lot fewer mistakes .\\n11 The fit and finish are very good, no gaps and I like the keyboard layout .\\n12 The keyboard is easy to use .\\n13 The keyboard has a decent feel but seems more cramped than the 1005ha .\\n14 Definitely the best looking netbook, and possibly the best keyboard .\\n15 The keyboard is not quite perfect, the screen doesn't tilt back as far as I'd like, slightly higher resolution in the screen would be nice a new model not yet available in the U .\\n16 The keyboard, though slightly smaller than standard, is a pleasure to use .\\n17 The keyboard is terrific, solid feel and full size .\\n18 The touchpad feels great, the boot up was fast, keyboard feels comfortable, and the screen is good .\\n19 The keyboard is REALLY easy to get used to, possibly the best netbook keyboard I've ever used .\\n20 It was easy to set up, and I really liked the comfort of the mouse and keyboard .\\n21 The machine has the most comfortable small keyboard I've ever used, because the keys are flat and so the surfaces that your fingerpads touch are actually about the size of standard keyboards .\\n22 The keyboard and mouse are my biggest concern for the tiny computer .\\n23 The keyboard is functional, but takes a little bit of getting use to .\\n24 Build quality is great, love the touchpad and keyboard .\\n25 Keyboard is not as sturdy as I would like has some minor flex\\n26 keyboard is actually a pleasure to use inspite of small size\\n27 Well, I'm a touch typist and very particular about my keyboard .\\n28 The only comparable keyboards I found were those on much larger laptops .\\n29 My keyboard also seems a bit noisy .\\n30 However, two weeks in, the keyboard would sporadically stop working .\\n31 The build quality is very good, and the keyboard, though small, is surprisingly comfortable and has good key response .\\n32 The keyboard is generous for a netbook, but I still have some trouble typing on it .\\n33 They keyboard takes some getting used to, but even still, I could not write a novel on this .\\n34 Keyboard feels funny at first, but you get used to it .\\n35 The keyboard isn't quite full sized of course, but very easy to get used to .\\n36 I have briefly tried typing on a number of netbooks since last fall, and this is the only one that had a decent keyboard just big enough to accommodate my hands and not result in multiple typing errors .\\n37 I have large hands and with a little time on the keyboard I'm breezing through word processing jobs .\\n38 I found the ASUS keyboard comfortable to type quickly it is touch, typeable after brief acclimation .\\n39 The keyboard, more than 90% standard size, is just large enough .\\n40 I picked it up right away due to the battery life, keyboard and sleek design .\\n41 With such a great battery life, keyboard and responsive touch pad, there's really no other model that can hold a candle to this puppy .\\n42 I think the most important thing on these small netbooks is the keyboard, and this one feels very good .\\n43 I notice the tighter keyboard spacing, but it seems easy to type on, yielding no more typing errors than my bad typing normally yields .\\n44 , keyboard feels well laid out\\n45 The keyboard is easy to type on , the battery life is great, and I've found that I really do like the touch pad with all its features .\\n46 Speaking of which, the keyboard's relatively large size , at 92% of the size of a normal one , writing longer texts on it is no problem .\\n47 While I still like the keyboard style of the Toshiba better, the EEE PC has some features that are pretty awesome !\\n48 The keyboard doesn't have separation between the keys .\\n49 I also noticed within the second or third day of use that the keyboard was loose .\\n50 I found if I pushed down and slid upward in the upper left corner, the keyboard moved up slightly and clicked into place .\\n51 It did not seem to affect the use of the keyboard but it was a slight distraction .\\n52 The most noticeable difference is the screen and keyboard functionality .\\n53 The cover and screen are glossy and it has a 92% keyboard which is plenty comfortable .\\n54 Speaking of typing, the keyboard is great, almost full size .\\n55 The keyboard really works for me .\\n56 It is smaller than a standard keyboard, but after a day or two I got used to it and now I can type pretty fast with few mistakes .\\n57 I also needed Web connectivity for research, a screen with a low squint factor and a keyboard that wasn't too cramped .\\n58 I goosed up the memory to 2G and stuffed a 8G SD memory board in the slot on the right side of the keyboard .\\n59 The keyboard is just fine for my bony fingers & cruise, on writing speed .\\n60 And it goes in that bag wrapped in the white paper plastic bag it was originally boxed up in, with another piece of packing plastic between the keyboard and the screen .\\n61 1 The keyboard takes a bit of getting used to .\\n62 It's 92% the size of a regular keyboard, and my somewhat larger, than, average male hands have adapted completely in a few weeks .\\n63 Small keyboard with some double, function keys\\n64 The keyboard is also combortable and not too small .\\n65 It is a bit of a pain to unplug and replug power, monitor, LAN, wireless mouse keyboard, hard drive back, up and PDA cable, but not the end of the world .\\n66 4 And finally the keyboard doesn't stay fastened down at the top it would seem like an easy fix, I've noted it for repair twice and I still have the same problem .\\n67 1 keyboard still floats 2the screen goes to a solid blue screen either right after starting or after it sits a while .\\n68 Great battery life, decent sized screen, and the keyboard was large enough to be comfortable to type on .\\n69 Controls for these functions are right on the keyboard .\\n70 The keyboard is very useable, I type on it as well as any desktop keyboard this was a must, have feature .\\n71 The ASUS is comfortable , the keyboard is normal sized, so I don't make any adjustment when typing .\\n72 The keyboard took about 20 minutes to get used to, but i'm now typing on it very comfortably .\\n73 only 10, inch screen, small keyboard and no CD, ROM .\\n74 My advice is to visit a store to personally try the keyboard and screen size .\\n75 This was actually the one of the things I feared most, but turns out the keyboard is set up real nice .\\n76 I like the keyboard, I like the speakers .\\n77 Keyboard is more than big enough for regular typing and keys have a nice tactile feel .\\n78 My favorite part about the Eee PC physically is the keyboard mousepad combo .\\n79 The keyboard is excellent and even though only 92% the size of a full size keyboard, feels like the big one .\\n80 I like the feel of the keyboard, and the touchpad software control makes it easy to use without getting in my way while I type .\\n81 The keyboard is just the right size .\\n82 I am 5'10 with large hands and have no problem using the keyboard .\\n83 Yes, screen is small, video card is weak, and keyboard is cramped, but this is the case for other netbooks at this price point .\\n84 Actually the keyboard is much better in my opinion .\\n85 Has a very long battery life, runs videos and multimedia smoothly without issues, fast loading, very usable keyboard, stylish sleek design, decent pricing for what you get\\n86 Due to the size of netbooks and a wide screen format, the screen should have been designed to be able to rotate all the way back to inline with the keyboard .\\n87 to use, , clunky mouse buttons, a too, small keyboard .\\n88 The keyboard is extremely comfortable to use .\\n89 The keyboard is comfortable to type on, it's not too small so that you have to consistently keep looking at the keyboard to find out which key you are going to press .\\n90 The 10, inch screen is bright and has good color, and the keyboard is only slightly smaller than a regular one .\\n91 Performance is good, screen very good, wireless very good, numerous USB ports, and keyboard layout is excellent .\\n92 It boots up quickly, especially after getting rid of the extra asus software that auto, boots at startup, its battery life is phenomenal, the screen is clear and easy to read, the keyboard is comfortable to type on and feels natural .\\n93 Like how they made keyboard as large as possible unlike Qosmio 17 which is almost same size .\\n94 The selling point, for me, was the keyboard .\\n95 I wanted to purchase a netbook with a keyboard as close to a lap or desktop as possible .\\n96 Keyboard is actually nice to work on connected to my wireless network immediately light, weight of course .\\n97 Luckily, there's a keyboard shortcut to toggle it on off .\\n98 It's 90% size keyboard doesn't take too long to get used to .\\n99 First and foremost, most companies , get the design of the keyboard completely wrong .\\n100 I was also extremely impressed at how comfortable the keyboard is .\\n101 I love the feel of typing on it, and have not had any issues transferring from a regular, sized keyboard to a smaller one .\\n102 My biggest concern was how I would handle a smaller keyboard .\\n103 For regular typing, the keyboard has worked well .\\n104 I have had a freeze up twice where the mouse and keyboard stop responding .\\n105 The keyboard feel is good but the touchpad is hard and being small I get confused with the side scroll area easily .\\n106 The keyboard is great and the screen looks good .\\n107 For this extra amount, I was looking for the larger screen, the longer battery life and the keyboard ergonomics .\\n108 Productivity wasn't a huge benefit, but I did feel the keyboard was a major selling point for the extra dough .\\n109 I have more productivity flow on a conventional laptop with a full sized screen and keyboard .\\n110 I was afraid I wouldn't like the small keyboard, but it's really easy to type on .\\n111 Excellent keyboard for typing .\\n112 I also have the Eeepc 900, but I can't stand typing on that keyboard , I've typed on this one for 10 hour work training sessions without issue .\\n113 The keyboard and buttons felt good for a small netbook .\\n114 The keyboard is smallish, but not ridiculously small .\\n115 The keyboard is surprisingly good for someone like me with big hands .\\n116 No keyboard issues on any of them, no running hot, although the adapters do get really warm .\\n117 Windows started crashing, freezing, unable to boot, keyboard or touchpad not working, etc .\\n118 The keyboard is very easy to adjust to and is very comfortable to use .\\n119 The keyboard is nearly full size and very comfortable to type on for hours .\\n120 The keyboard is awesome since it looks like regular one with a large backspace, and two shifts .\\n121 I like the zoom in out feature on the keyboard !\\n122 The keyboard is only slightly smaller than a regular one, so it's very comfortable .\\n123 I mostly find that when I make typos, it's not because of the keyboard, it's because of the smallness of the screen, , I just can't see what I'm doing as well as a laptop .\\n124 A lot of netbooks on the market have mangled the keyboard in one way or another such that if you are a touch typist, you find yourself hitting the wrong key often, which is frustrating .\",\n \" It is easy to read and when touching the screen it works great !\\n0 and zoom out buttons on the 255w to the same side of the screen which makes it a bit easier .\\n1 On the 750 the zoom buttons are on opposite sides of the screen .\\n2 The screen is easily readable in the sun, and I love how it automatically dims to 20% at night .\\n3 Display is excellent , the layout of information on the screen is very good showing upcoming turns at the top, your speed, the local speed limit and the estimated time of arrival at the bottom .\\n4 The text to speech is great for not having to look down at the screen endangering yourself and others on the road and after the voice updates the Garmin put out for the 255W the scratchiness and robotic sounding voice became crisp and very audible .\\n5 The widescreen is a plus and I highly recommend it, even though it has the wide screen you can stick it in your back pocket which can be conveniently used for walking directions .\\n6 The screen is very bright and easy to see with direct sunlight and at night time .\\n7 If you are looking for a simple wide screen GPS the Nuvi 255W is the right choice .\\n8 One of my favorite features on the Garmin 255W is the odometer screen that will allow you to track all sorts of data about your long car trip .\\n9 It tells you on the main screen your estimated time of arrival which will change depending upon your stops and speed .\\n10 Additionally, I find the data in the odometer screen to be fasscinating .\\n11 Another screen at the touch of the button will show you the turn by turn directions coming up so that you can plan even better, especially in areas that you have just enough familiarity to be considered dangerous .\\n12 , 255w has an arrow at the top of the screen that shows the direction of the next turn .\\n13 To make things worse, in the the Main st may not be on the screen on the default scale .\\n14 The way map is displayed is good and the wide screen helps to see more map area .\\n15 Other than the Magellan's screen being an inch smaller , but really noticeable , the Magellan did not have text to voice, and often would take a much longer route even though we told it to take freeways .\\n16 The most noticeable thing is that the screen is much easier to read, and that the text to voice is extremely valuable and much better than a beep just as you need to turn .\\n17 On the other hand, after about a week of using the Garmin, it seems to understand where we are, and now POIs as far as 25 miles away will show up when the screen is touched .\\n18 The screen is easy to see, the voice tells you where you are and it's very accurate .\\n19 I switched to the Nuvi 255W after the screen on my Nuvi 760 got cracked .\\n20 > Same screen size as the other 4 .\\n21 > Better screen touch sensitivity\\n22 > More responsive that my old 760 , plus a better looking screen\\n23 The home screen shows four options :\\n24 Any time you are viewing the map, you can zoom in or out by tapping the appropriate icon located on the top right of the screen .\\n25 I have noticed that when I see a speed limit sign on the road, indicating a change of speed limit for that road, the Nuvi is not far behind in changing the speed limit on the screen .\\n26 If you missed the spoken directions, you can look at the top of the screen for written directions .\\n27 So, although the Nuvi doesn't verbalize those directions, I can look at the screen to see the exit I need to take .\\n28 The screen is bright and the maps are generally good .\\n29 3 Love the touch screen technology\\n30 There were a few times I drove under overpasses on the interstate and no intersection was shown on the screen .\\n31 Typical of Garmin, the product works well, wide screen is very nice .\\n32 Functionally the only slight problem is that on my unit I have to press pretty hard on the screen if I want to 'drag' the map .\\n33 The extra features of the 255W over lesser models that I find highly beneficial include spoken street names and the wide screen display .\\n34 Now the only screen I get says the system software is missing .\\n35 I use the suction cup mount because I like to keep the screen in my frame of vision without turning my head, but I make sure to take it with me when I park my car .\\n36 From the map screen it's but 2 presses on the large and accessible touchscreen to get a Where Am I ?\\n37 I also realize that even if I crashed differently I had been injured in other ways but the car were still drivable that it's but 1 press on the screen to get direction to the nearest emergency services from that lovely screen that told me where I was .\\n38 I just wish the screen is larger .\\n39 1 Wanted a wide screen model, its difficult to see the 4 \\n40 4 It has built in picture viewer and a card slot, so insert your memory card, browse to picture browser and you don't need a PC, has enough big screen to enjoy\\n41 Its for wide screen models and it fits perfectly my 255w with a flap that covers it screen .\\n42 I chose a hard type of case that zippered the screen in, as I didn't want the possibility of it sliding out .\\n43 Also, it's hard to view the screen when it's super sunny outside, but the text to speech capability is an advantage .\\n44 Before I get into the specifics of my review, let me offer one important piece of advice , , BUY A CARRYING CASE to protect the screen !\\n45 These gadgets have sensitive touchscreen menus, and I think the fact that I didn't protect the screen on my last GPS is the reason it died after only 14 months .\\n46 I had a Nuvi 205 and I really liked it but I wanted a bigger screen .\\n47 It's an emergency location feature , you can tap the screen to get your latitude and longitude .\\n48 BUT, in direct sunlight, the screen is difficult to see in my convertible .\\n49 Not only the voice gives turn, by, turn instructions, the map on the screen also has a thick purple line indicating the route ahead .\\n50 The local speed limit is shown on left side of the screen with current driving speed shown at the bottom of the screen .\\n51 One thing that would be useful is putting a mute button on the screen available at all times .\\n52 Having the speed limit show up on the screen was also great since I was in unfamiliar territory .\\n53 I watched the screen several times as I passed by a speed limit sign, and it would change almost immediately as I passed by !\\n54 I was afraid the screen on one of these things would be too small for me to see, and the last thing I need would be futzing around with a GPS screen when I'm on the road if I wanted to do that, I could drive and read a map !\\n55 The screen is huge next to some of the units I saw .\\n56 I have no problems reading it in bright sunlight, but with the voice to text, the screen is almost unnecessary .\\n57 It has a very clear and bright screen and is loaded with multiple useful features .\\n58 It has a great screen presentation that is very easy to read when it is mounted on your windshield .\\n59 3 inch screen was a slight improvement over my former 3 .\\n60 The screen is crystal clear and the voice in it is nice and loud .\\n61 The screen is large so that it is easily read while you're driving .\\n62 The wide screen and spoken street names are a must .\\n63 If I'm listening to loud music, I won't be able to hear the exact words but I can hear it vaguely and that is a cue that I should glance down at the top of the screen and see what my next move is .\\n64 There should be an external volume control on the unit, or at least volume control from the main map screen .\\n65 The posted speed limit on the screen is pretty cool too .\\n66 Also, push every icon on every screen you see .\\n67 In both instances this could have been avoided if I had just paid attention to the screen which showed the correct road highlighted .\\n68 The dashboard mount keeps the unit easily within reach so that you can safely touch the screen while driving .\\n69 Was thinking about buying the 265WT for only $45 more, but decided I didn't need bluetooth or the Traffic Feature which gives you flash advertisements on the screen .\\n70 Those are the only 2 differences between the 2 models and I'd rather not have flash advertisements coming up on my GPS screen at random .\\n71 3 Inch screen is awesome to look at both during the day and at night .\\n72 The Voice Prompted turn by turn directions make it easy to get from one place to another without having to look up at the GPS, but of course you also get turn, by, turn directions on the GPS with a touch of the screen .\\n73 The screen is clear and the instructions are good though again if you have a lot of exits or turns all in the same spot you have to be careful to just listen to the voice and watch the road or you can miss the turn .\\n74 The screen is big enough to view maps, street names, etc easily .\\n75 Sufficiently sensitive touch screen\\n76 Now if Garmin would put a compass on the main screen always pointing to the north, it would be perfect .\\n77 We love the spoken street names and the wide screen .\\n78 The 255w does not have a convenient volume control you must go through the menu system on the screen .\\n79 The screen size makes it really easy to see without being a safety hazard .\\n80 The background of the screen turns black when it's nighttime .\\n81 The user must get into a few layers of the menu to access the touch screen volume control .\\n82 Screen is clear and maps are pretty easy to follow .\\n83 I look at the direction line at the top bar of the screen to make sure I understand what the verbal instructions were .\\n84 3 inches large screen is large enough for you to see the details of the map yet not distracting you from driving .\\n85 3 inches screen and steady performance .\\n86 , Its a touch screen and a 4 .\\n87 3 wide screen also speak out the streets name and tells you when or how far to turn\\n88 , Also very quick and I mean quick reroute when you miss a turn plus smooth update position when moving, not choppy on the screen .\\n89 , EASY to read day or night you can also adjust the screen brightness\\n90 One down side is the lack of volume button on the unit you have to adjust the volume form the tool menu on the screen which can be a challenge if you want to change the volume when you are driving .\\n91 After lots of internet research, we settled on the Garmin 255W for the text, to, speech and wide screen features .\\n92 When attached to the PC, the screen just indicates the connection .\\n93 The wide screen is important because of the better keyboard .\\n94 We started with a non, touch screen which was great, then we updated to the streetpilot C330 which was a dream .\\n95 After ample research I selected the Nuvi 255W for it's abundant features, wider screen and voice communication .\\n96 Looking at comparable units, this one seems to have more features and a larger screen .\\n97 I can even see the screen without my reading glasses .\\n98 It speaks the street names if you touch the car on the screen it lets you know lat and long .\\n99 Screen size is good and I didn't want one that had blue tooth and a lot of 'extras' I wouldn't use .\\n100 With either unit, the text on the screen usually tells you what you need to know .\\n101 I've only used the wide screen versions, so I can't compare, but I personally wouldn't want to go to a smaller screen .\\n102 The Garmin nuvi 255W I bought through Amazon has a dead red pixel which is always on and what is worse is that the position of that red dot is right in the middle of the screen .\",\n \" The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n0 They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n1 The service was good, very friendly staff and we loved the free wine reception each night .\\n2 has free wireless and help you with transportation needs .\\n3 The nightly free wine tasting from 5 , 6 pm is a brilliant idea and gets guests together to socialise witheach other .\\n4 They have a happy hour where you have a couple offree drinks between 5 and 6 and this gives you a chance to meet other travellers .\\n5 free wifi and happy hour wine every afternoon !\\n6 The parking was free, which was great, and the hotel was conveniently located for public transport, and local attractions .\\n7 We were also told of the free wine reception at 5pm, great idea as it meant you could chat to your fellow guests .\\n8 Free internet access and Happy Hour every afternoon .\\n9 As said before, the free wine reception in the evening is Two Buck Chuck, drinkable, but certainly not anything to write home about .\\n10 The free wine tasting every night was a wonderful extra and welcomed relaxment in between a long day of sightseeing and evenings out .\\n11 That and also the free coffee and tea every morning were little extras that we felt made you feel like a welcomed guest and that they are going out of their way to make the hotel special .\\n12 Free internet in the lobby but none of any sort in the rooms .\\n13 The hotel lobby was lovely, real fire, large comfy chairs and free internet access in the corner .\\n14 There is a concierge, also free wine and appetizers in the afternoon .\\n15 00 for an adult with free entrance for shildren , , we were both fascinated for nearly two hours and it was not crowded .\\n16 We went down for the free wine reception, and had a great time .\\n17 The hotel has one computer available with free internet .\\n18 And free wifi throughout the hotel which worked flawlessly .\\n19 The room also has free wireless which I've read other hotels nearby don't .\\n20 Free Wifi in your room, and the free wine reception in the evenings was great .\\n21 The free happy hour really made the visit extra special , we met so many wonderful people during our 7 day stay this way .\\n22 I personally appreciated the free internet service in the hotel .\\n23 Free internet and a computer for use in the lobby was helpful .\\n24 The manager's cocktail hour was a nice touch, and the free coffee in the morning was also nice though I had to ask both mornings for hot chocolate to be brought out for the kids, and the advertised biscotti was no where to be found .\\n25 I didn't get to take advantage of the free coffee in the morning, but my husband and I did go to the 5pm, 6pm cocktail hour, which we enjoyed .\\n26 Coffee and biscotti were available in reception every morning free of charge or if you preferred, there was a restaurant in the hotel that served breakfast or a Starbucks round the corner .\\n27 This hotel offers a lot , a great location, great staff, free wine tastings and morning coffee .\\n28 I booked a standard king room and was up graded to a premier king free of charge upon our arrival .\\n29 This is a hassle, free place to stay with a dog .\\n30 The hotel had free coffee and drinks everyday and free access to wireless internet .\\n31 Free coffee and biscotti in the morning helped get the GF out of bed .\\n32 00 found most other places closing so it was Hobsons choiceThe best part of the stay were the free wine and eats in the lounge arond 17 :\\n33 The free wine and nibbles served between 5pm and 6pm were a lovely touch .\\n34 We did however take advantage of the free coffee and biscotti that was offered every morning in the lobby .\\n35 No bar as such in the hotel but they have free wine tasting every day at 5p .\\n36 The free wine beer and coffee hot chocolate biscotti is a wonderful touch and we took full advantage of it .\\n37 The late afternoon free wine reception was a really nice touch and we enjoyed this very much .\\n38 Although we didn't use it, there was free Internet access in the room .\\n39 l also enjoyed the morning coffee in the lobby and the free wine .\\n40 The lobby area was really pleasant and the free wine gets you talking to other guests .\\n41 The free morning hot cocoa and coffee was nice before our daily excursions .\\n42 The afternoon wine and cheese was a nice bonus as was the free Internet .\\n43 We were surprised and delighted when, on arrival, we were given tokens for free continental breakasts .\\n44 The reception area is compact and during the free evening wine sampling gets quite busy .\\n45 The free morning coffee is also well appreciated and attended .\\n46 The free drinks are great if you and like the feeling of getting something for nothing .\\n47 The free coffee and biscotti in the morning kept us going until breakfast .\\n48 Evening wine hour from 5, 6 was also good , free wine and nibbles and a chance to talk to other guests about places to visit , eat etc .\\n49 Very clean, get a glass of wine free between 5 6pm in the lobby .\\n50 Free high speed wireless Internet access, which in San Francisco most always has a charge .\\n51 With this hotel we received a free 1 hour tour cruise around Alcatraz and down to the Golden Gate Bridge .\\n52 You also get 2 free transportation passes each day of your stay that we used for the trolley systems .\\n53 And remember the MUNI passes were free !\\n54 The free drinks held every evening are welcoming after a long day out .\\n55 It was freezing cold in the room and I don't think it warmed up even with the heat on until the next day .\\n56 If you have any other questions please feel free to msg me and I will do my best to answer your questions .\\n57 The wine tasting in the afternoon made available from the manager was a really nice touch as was the free tea and coffee in the lobby in the morning which got you off to a great start for the day .\\n58 The hotel has free wireless .\\n59 At 5 o'clock every evening in the hotel lobby there is a free wine reception for an hour .\\n60 Nothing disappointed us about our stay and we didn\\u0092t even take advantage of the free wine tasting between 5, 6pm .\\n61 We did however make use of the free tea and coffee when we had an early start .\\n62 Earily evening free wine tasting .\\n63 In the morning free great coffee and biscotti in the lobby, with carry, out cups .\\n64 Another great thing about the hotel is that every day, they offer wine and beer from 5, 6pm for free for all hotel guests .\\n65 Then we picked up the free lobby coffee and the WSJ and the USA Today newspapers, thus having a cheap breakfast .\\n66 We particularly enjoyed the nightly 'manager's reception' when wine and nibbles are freely available !\\n67 The nightly free wine reception is a great way to meet people and find out what is worth seeing and what is not .\\n68 Free Wireless internet access .\\n69 Speaking of parking, you're going to have to pay and it's going to have to be valet service, as there are no free self park lots that are part of the hotel .\\n70 The staff were friendly and the free coffee and biscoti each morning and wine at 6pm each evening were occassions when one could meet other guests .\\n71 The hotel provides free hot drinks and biscotti in the mornings, which was good quality but why ?\\n72 Free wine and mingle from 5 to 6pm .\\n73 It really does save if you can get a deal with free parking, but the fee is not out of line .\\n74 There was a free wine tasting that the hotel put on that we were, unfortunately, too jet, lagged to participate in .\\n75 Every evening 5pm to 6pm, guests are invited to have free wine in the reception area and there is free coffee there every morning .\\n76 The hotel's evening wine hour and morning's biscotti hour also distinguish the property as a cut above, and our group, which has stayed at many a biz hotel, had no problem whatsoever in fact, a courtesy upgrade got us a fine meeting space with free internet, which even impressed our boss .\\n77 The great thing for us was the free parking .\\n78 We stayed at the BW Tuscan Inn only because they were offering a great winter deal , $99 for a room with king, size bed and free parking .\\n79 Overall, we would recommend this place to friends, especially if they are able to get a good discount and free parking .\\n80 Oh,yes, free coffee and biscotti for breakfast, and wine in the afternoon !\\n81 There's free coffee, teas at breakfast time with little biscotti and, best of all, from 5 til 6pm you get a free wine 'tasting' reception which, as long as you don't take the p\\n82 No free internet here though .\\n83 but it's great to get a couple of free drinks .\\n84 Excellent free wine reception in evening .\\n85 And free NEw York Times to go with it .\\n86 00 free wine and beer very popular and nice if you happen to catch it before you go out to dinner .\\n87 Being the lushes that we are, my wife and I took full advantage of the free happy hour, arriving promptly at five, and not leaving until six .\\n88 Stayed for two nights and really enjoyed the free wine in the evenings and biscotti and coffee and or wide range of teas in the morning .\\n89 Refrigerator, minibar, free wifi, iron board, hairdryer, down comforters and pillow top beds .\\n90 The lobby has a wine tasting for free between 5, 6pm each night and you meet dozens of really nice people from all over the world .\\n91 and the free coffee tea and beer wine daily was very nice and allowed for a cozy feeling among the quests .\\n92 The hotel offers free wifi to all guests who have a laptop .\\n93 Free coffee in the morning, free beer and wine in the afternoon, what more could you ask for ?\\n94 Free coffee in the lobby in the mornings is nice .\\n95 The free wine in the lounge each evening was very nice, and given with good grace , even the fourth glass !\\n96 Coffee and hot chocolate were also available free from 6am each morning, although there was also a coffee maker in the room .\\n97 The only criticism I have is that there was no safe in the room, although safety deposit boxes were available free of charge in reception .\\n98 The rest of the immediate neighborhood seemed safe and nondescript, and largely free of the homeless and the street people that are in evidence elsewhere in this costly city .\\n99 A complete disappointment , from losing the reservation made through Best Western toll, free number to charging our credit card for someone elses stay 3 WEEKS AFTER WE LEFT !\\n100 Dont let the " free" wine and biscotti fool you .\\n101 The free beer, wine etc and snacks on an afternoon was a lovely touch and helped you swap tips and chat to other guests .\\n102 The coffee and biscotti offered in the morning is a good way to start the day, and the free wine hour from 5 to 6 is very pleasant, although we were so busy we only attended twice .\\n103 Great free " coffee and" in the morning and a very pleasant afternoon complimentary wine .\\n104 I had read a prior review complaning about the fact the hotel had run out of the " free" morning biscotti's as promised to quests .\\n105 We also always look for free wifi .\\n106 Internet access was not free .\\n107 Free wireless internet in the room , fantastic !\\n108 Best feature was the freebie drinks in reception from 5, 6pm .\\n109 Free internet use in the reception area was a great touch .\\n110 Guests actually talk to one another during morning coffee, and the free hour of wine at 5 pm .\\n111 In the lobby they have free coffee, tea and biscotti everyday and have wine and snacks from 5 p to 6 p daily .\\n112 The concierge even gave us a pair of City Passes someone had turned in with four more days still on them, so we rode everywhere for free .\\n113 The afternoon wine beer was a great idea, as was the free morning tea cofee .\\n114 The use of the foyer for free drinks between 5, 6pm was popular especially with fellow Brits !\\n115 Free coffee and biscotti in the morning is a nice touch but we never made it back in time for free beer and wine from 5, 6pm .\\n116 The free morning coffee and evening wine reception were both good opportunities to meet other guests .\\n117 Morning coffee and biscotti was a nice touch as well as the all you can drink free wine hour in the evening .\\n118 Parking was $26 day , free valet with on and off priv .\\n119 The hotel was of a good standard, big clean rooms, decent bathroom and the free wine reception in the evening was an added bonus .\\n120 The staff are friendly and there is one computer for internet access as well as free coffee and biscuits in the afternoon .\\n121 During that time there is a very nice and knowledgable gentlemen who offers free chair massages .\\n122 It's location is fantastic if you want to get to the Ballpark, to the cable car, on and off the freeway, to the wharf, etc .\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 5,\n \"samples\": [\n 1,\n 4,\n 3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 11 + } + ] + }, + { + "cell_type": "code", + "source": [ + "document_df[document_df['cluster_label']==0].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "_2gr704zfZ52", + "outputId": "bd996b30-8159-4cdd-8e26-42b199143bbf" + }, + "execution_count": 12, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "32 accuracy_garmin_nuvi_255W_gps \n", + "16 battery-life_amazon_kindle \n", + "21 battery-life_ipod_nano_8gb \n", + "37 battery-life_netbook_1005ha \n", + "11 buttons_amazon_kindle \n", + "6 directions_garmin_nuvi_255W_gps \n", + "44 display_garmin_nuvi_255W_gps \n", + "39 eyesight-issues_amazon_kindle \n", + "1 features_windows7 \n", + "0 fonts_amazon_kindle \n", + "43 keyboard_netbook_1005ha \n", + "38 navigation_amazon_kindle \n", + "34 performance_netbook_1005ha \n", + "8 satellite_garmin_nuvi_255W_gps \n", + "40 screen_garmin_nuvi_255W_gps \n", + "10 screen_ipod_nano_8gb \n", + "18 screen_netbook_1005ha \n", + "27 size_asus_netbook_1005ha \n", + "41 sound_ipod_nano_8gb \n", + "2 speed_garmin_nuvi_255W_gps \n", + "31 speed_windows7 \n", + "3 updates_garmin_nuvi_255W_gps \n", + "25 video_ipod_nano_8gb \n", + "42 voice_garmin_nuvi_255W_gps \n", + "\n", + " opinion_text \\\n", + "32 , and is very, very accurate .\\n0 but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n1 This functi... \n", + "16 After I plugged it in to my USB hub on my computer to charge the battery the charging cord design is very clever !\\n0 After you have paged tru a 500, page book one, page, at, a, time to get from Chapter 2 to Chapter 15, see how excited you are about a low battery and all the time it took to get there !\\n1 ... \n", + "21 short battery life I moved up from an 8gb .\\n0 I love this ipod except for the battery life .\\n1 ... \n", + "37 6GHz 533FSB cpu, glossy display, 3, Cell 23Wh Li, ion Battery , and a 1 .\\n0 Not to mention that as of now... \n", + "11 I thought it would be fitting to christen my Kindle with the Stephen King novella UR, so went to the Amazon site on my computer and clicked on the button to buy it .\\n0 As soon as I'd clicked the button to confirm my order it appeared on my Kindle almost immediately !\\n1 ... \n", + "6 You also get upscale features like spoken directions including street names and programmable POIs .\\n0 I used to hesitate to go out of my directions but no... \n", + "44 3 quot widescreen display was a bonus .\\n0 This made for smoother graphics on the 255w of the vehicle moving along displayed roads, where the 750's display was more of a jerky movement .\\n1 ... \n", + "39 It feels as easy to read as the K1 but doesn't seem any crisper to my eyes .\\n0 the white is really GREY, and to avoid considerable eye, strain I had to refresh pages every other page .\\n1 The dream has always been a portable electronic device that could hold a ton of reading material, automate subscriptions and fa... \n", + "1 I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ... \n", + "0 Being able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ... \n", + "43 , I think the new keyboard rivals the great hp mini keyboards .\\n0 Since the battery life difference is minimum, the only reason to upgrade would be to get the better keyboard .\\n1 The keyboard is now as good as t... \n", + "38 In fact, the entire navigation structure has been completely revised , I'm still getting used to it but it's a huge step forward .\\n0 ... \n", + "34 The Eee Super Hybrid Engine utility lets users overclock or underclock their Eee PC's to boost performance or provide better battery life depending on their immediate requirements .\\n0 In Super Performance mode CPU, Z shows the bus speed to increase up to 169 .\\n1 One... \n", + "8 It's fast to acquire satellites .\\n0 If you've ever had a Brand X GPS take you on some strange route that adds 20 minutes to your trip, has you turn the wrong way down a one way road, tell you to turn AFTER you've passed the street, frequently loses the satellite signal, or has old maps missing streets, you know how important this stuff is .\\n1 ... \n", + "40 It is easy to read and when touching the screen it works great !\\n0 and zoom out buttons on the 255w to the same side of the screen which makes it a bit easier .\\n1 ... \n", + "10 As always, the video screen is sharp and bright .\\n0 2, inch screen and a glossy, polished aluminum finish that one CNET editor described as looking like a Christmas tree ornament .\\n1 ... \n", + "18 Keep in mind that once you get in a room full of light or step outdoors screen reflections could become annoying .\\n0 I've used mine outsi... \n", + "27 A few other things I'd like to point out is that you must push the micro, sized right angle end of the ac adapter until it snaps in place or the battery may not charge .\\n0 The full size right shift k... \n", + "41 headphone jack i got a clear case for it and it i got a clear case for it and it like prvents me from being able to put the jack all the way in so the sound can b messsed up or i can get it in there and its playing well them go to move or something and it slides out .\\n0 Picture and sound quality are excellent for this typ of devic .\\n1 ... \n", + "2 Another feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ... \n", + "31 Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n0 , faster about 20% to 30% faster at running applications than my Vista , seriously\\n1 ... \n", + "3 Another thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe... \n", + "25 I bought the 8, gig Ipod Nano that has the built, in video camera .\\n0 Itunes has an on, line store, where you may purchase and download music and videos which will install onto the ipod .\\n1 ... \n", + "42 The voice prompts and maps are wonderful especially when driving after dark .\\n0 I also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n1 ... \n", + "\n", + " cluster_label \n", + "32 0 \n", + "16 0 \n", + "21 0 \n", + "37 0 \n", + "11 0 \n", + "6 0 \n", + "44 0 \n", + "39 0 \n", + "1 0 \n", + "0 0 \n", + "43 0 \n", + "38 0 \n", + "34 0 \n", + "8 0 \n", + "40 0 \n", + "10 0 \n", + "18 0 \n", + "27 0 \n", + "41 0 \n", + "2 0 \n", + "31 0 \n", + "3 0 \n", + "25 0 \n", + "42 0 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
32accuracy_garmin_nuvi_255W_gps, and is very, very accurate .\\n0 but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n1 This functi...0
16battery-life_amazon_kindleAfter I plugged it in to my USB hub on my computer to charge the battery the charging cord design is very clever !\\n0 After you have paged tru a 500, page book one, page, at, a, time to get from Chapter 2 to Chapter 15, see how excited you are about a low battery and all the time it took to get there !\\n1 ...0
21battery-life_ipod_nano_8gbshort battery life I moved up from an 8gb .\\n0 I love this ipod except for the battery life .\\n1 ...0
37battery-life_netbook_1005ha6GHz 533FSB cpu, glossy display, 3, Cell 23Wh Li, ion Battery , and a 1 .\\n0 Not to mention that as of now...0
11buttons_amazon_kindleI thought it would be fitting to christen my Kindle with the Stephen King novella UR, so went to the Amazon site on my computer and clicked on the button to buy it .\\n0 As soon as I'd clicked the button to confirm my order it appeared on my Kindle almost immediately !\\n1 ...0
6directions_garmin_nuvi_255W_gpsYou also get upscale features like spoken directions including street names and programmable POIs .\\n0 I used to hesitate to go out of my directions but no...0
44display_garmin_nuvi_255W_gps3 quot widescreen display was a bonus .\\n0 This made for smoother graphics on the 255w of the vehicle moving along displayed roads, where the 750's display was more of a jerky movement .\\n1 ...0
39eyesight-issues_amazon_kindleIt feels as easy to read as the K1 but doesn't seem any crisper to my eyes .\\n0 the white is really GREY, and to avoid considerable eye, strain I had to refresh pages every other page .\\n1 The dream has always been a portable electronic device that could hold a ton of reading material, automate subscriptions and fa...0
1features_windows7I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ...0
0fonts_amazon_kindleBeing able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ...0
43keyboard_netbook_1005ha, I think the new keyboard rivals the great hp mini keyboards .\\n0 Since the battery life difference is minimum, the only reason to upgrade would be to get the better keyboard .\\n1 The keyboard is now as good as t...0
38navigation_amazon_kindleIn fact, the entire navigation structure has been completely revised , I'm still getting used to it but it's a huge step forward .\\n0 ...0
34performance_netbook_1005haThe Eee Super Hybrid Engine utility lets users overclock or underclock their Eee PC's to boost performance or provide better battery life depending on their immediate requirements .\\n0 In Super Performance mode CPU, Z shows the bus speed to increase up to 169 .\\n1 One...0
8satellite_garmin_nuvi_255W_gpsIt's fast to acquire satellites .\\n0 If you've ever had a Brand X GPS take you on some strange route that adds 20 minutes to your trip, has you turn the wrong way down a one way road, tell you to turn AFTER you've passed the street, frequently loses the satellite signal, or has old maps missing streets, you know how important this stuff is .\\n1 ...0
40screen_garmin_nuvi_255W_gpsIt is easy to read and when touching the screen it works great !\\n0 and zoom out buttons on the 255w to the same side of the screen which makes it a bit easier .\\n1 ...0
10screen_ipod_nano_8gbAs always, the video screen is sharp and bright .\\n0 2, inch screen and a glossy, polished aluminum finish that one CNET editor described as looking like a Christmas tree ornament .\\n1 ...0
18screen_netbook_1005haKeep in mind that once you get in a room full of light or step outdoors screen reflections could become annoying .\\n0 I've used mine outsi...0
27size_asus_netbook_1005haA few other things I'd like to point out is that you must push the micro, sized right angle end of the ac adapter until it snaps in place or the battery may not charge .\\n0 The full size right shift k...0
41sound_ipod_nano_8gbheadphone jack i got a clear case for it and it i got a clear case for it and it like prvents me from being able to put the jack all the way in so the sound can b messsed up or i can get it in there and its playing well them go to move or something and it slides out .\\n0 Picture and sound quality are excellent for this typ of devic .\\n1 ...0
2speed_garmin_nuvi_255W_gpsAnother feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ...0
31speed_windows7Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n0 , faster about 20% to 30% faster at running applications than my Vista , seriously\\n1 ...0
3updates_garmin_nuvi_255W_gpsAnother thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe...0
25video_ipod_nano_8gbI bought the 8, gig Ipod Nano that has the built, in video camera .\\n0 Itunes has an on, line store, where you may purchase and download music and videos which will install onto the ipod .\\n1 ...0
42voice_garmin_nuvi_255W_gpsThe voice prompts and maps are wonderful especially when driving after dark .\\n0 I also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n1 ...0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"document_df[document_df['cluster_label']==0]\",\n \"rows\": 24,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 24,\n \"samples\": [\n \"features_windows7\",\n \"screen_netbook_1005ha\",\n \"accuracy_garmin_nuvi_255W_gps\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 24,\n \"samples\": [\n \" I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 All of these features combine to create a much improved and enjoyable desktop experience .\\n2 I enjoyed the new convenience features in Windows 7 .\\n3 They showed me PC laptops that had more features than the MacBook, and which cost way less than the MacBook, too .\\n4 But that aside, I like the availability of software, the new features like the improved Taskbar, Windows Peek, and the Aero environment .\\n5 If you're used to OS X, but want to come into the PC world where things cost less and you get more features, by all means consider Windows 7 the stepping stone to do just that .\\n6 After seeing the pricing on the newest MacBooks this week, and the limited features compared to what I currently own, I have to say that now is the right time to consider that switch to PC .\\n7 These new features make the user experience much more superior than anything Windows has ever offered .\\n8 Also there are some other new things such as touch gesture features and disk encryption that normal users won't use either because it isn't needed or the hardware isn't widely adopted yet .\\n9 You can read all the new features in your Windows 7 short version handbook .\\n10 But what I really like about Windows 7 are the new and improved features it offers .\\n11 Also in Windows Explorer, two new features .\\n12 All the nifty new features mean squat if my computers don't function properly .\\n13 , then Vista, but if so, none of its features have been impressive enough to have blown me away .\\n14 It does have some nice features .\\n15 W7 is fast and resource friendly, every hardware device works perfect , and there's a ton of great features .\\n16 Runs well, but no stand out new features for my usage .\\n17 Having used Windows ME and XP for several years, and before upgrading, Vista, I heard a lot of great things about Windows 7, as well as new features .\\n18 I liked the built, in features of Vista and of course the appearance, but I prefered the stability and speed of XP even with a high, end system .\\n19 , Better user interface features like being able to view the desktop with one mouse gesture to the bottom right of the screen .\\n20 LEAST useful features of Windows 7 to me :\\n21 They're features I don't use .\\n22 Windows 7 Ultimate is there too off course, but I personally can't bring myself to spend that much more money just to get a tiny few features that I know I will never use like multi, language support and BitLocker .\\n23 It's loaded with useful features .\\n24 It has some features that I personally don't find useful, BUT if in the future I do need them, they're there .\\n25 There are many features that allow me to personalize my working environment .\\n26 Vista has more features than XP, but many of them didn't make the OS more usable for me .\\n27 Personally I thought Vista was very handsome, what with its transparency, 3, D effects, color schemes, and usability improvements to Windows Explorer, and I believe Windows 7 continues that trend by looking just as sexy , , if not more , , while at the same time adding its own valuable features and enhancements .\\n28 I haven't yet become accustomed to some features like Aero Shake, but hey, those things are there if I need them .\\n29 I can't tell what positives it offers still, but it's still a nifty upgrade with a lot of nifty features over XP that make for a more fun experience for some, and a more organized experience involving navigating huge catacombs of archives and files .\\n30 Did I mention that Win7 offers nothing in terms of any new worthwhile features ?\\n31 0 out of 5 stars XP speed & stability, Vista, like features without the headaches !\\n32 I really wanted to like Vista with all it's cool new features, but unfortunately it was a disaster because it just didn't work .\\n33 And I love all the new Aero Shake Peek Snap windows features, but I still prefer Mac OS X's Expose .\\n34 , New features with better window and file managment\\n35 , Many features are copied from Mac OS X\\n36 Of course there are some new features, and a little more eye candy if that's important to you too .\\n37 Nice upgrade and love some of the new features, snip tool, sticky's on the desktop, Docking on the task bar and thanks for clearing the clutter on the Tray .\\n38 W7 has some cool features that I like, and I'm sure I don't even know the half of it yet .\\n39 I don't have a TV Tuner, so I can't take advantage of that feature, but there are other features & it seems to be working good .\\n40 00 dollars just to upgrade for some fancy new features .\\n41 Since my Google Sidebar had some features that I liked, it allowed me to replace it for the Windows one .\\n42 Because others on this site have already described in sufficient detail all the amazing features of W7, I will not repeat them .\\n43 There are so many more features of this that are very difficult to list all here .\\n44 All of these features have worked 100% of the time, which is previously unheard of .\\n45 Removing a feature from the Programs and Features panel simply disables access to it, but the underlying program files associated with that feature remain on the hard, drive taking up space .\\n46 I also noticed improved power management, including once of my favorite features which is the auto dimming of my laptop monitors once my computer is not being used .\\n47 All the features of Vista, but without any of the problems .\\n48 It still works pretty good though, just a lack of some features that i had before .\\n49 What I will highlight are a few features of Windows 7 which I have been thoroughly impressed with .\\n50 Perhaps my expectations were low, since Microsoft OSes tend usually to be just functional without much pizazz or many power user shortcuts and features, but Windows 7 really is a well, crafted OS .\\n51 I do not use most of the features, such as gaming, that seem to benefit most from the upgrade .\\n52 Does the new operating system have cool features ?\\n53 My only complaint would be that I would like to have a family pack available in the Windows Professional flavor or at least the option to purchase some of the professional features separately .\\n54 Seems like they actually stepped it down when it should have been stepped up with more features .\\n55 I think the reason it didn't is because it wants to force the user to use the Windows Live toolbar that includes other features similar to what Google offers .\\n56 Smooth OS with great little features .\\n57 A lot of the new finder desktop windows features are awkward working versions of what Mac OS X has had for a couple of years or more .\\n58 If you didn't come over from the bright side you would probably think these features are very cool, so enjoy them for what they are if you've never played around with a Mac enough to be comfortable in that environment .\\n59 I am not going to review the features, because there's plenty of that already .\\n60 There is not a lot of new features in the operating system .\",\n \" Keep in mind that once you get in a room full of light or step outdoors screen reflections could become annoying .\\n0 I've used mine outside on a sunny day, and the screen is still very much legible .\\n1 In fact it was much more detailed than the matte screen on my Dell D600 .\\n2 Some ppl may prefer a higher resolution screen but I don't think it's required .\\n3 I delayed ordering the computer because of the horror stories of bad batteries, faulty chargers and blue screen crashes .\\n4 1 inch screens, Windows XP operating systems, a plethora of USB ports, a card reader, WiFi and most have a few color choices .\\n5 1 inch screens are a bit cramped if several toolbars have been turned on .\\n6 Some of the Asus special on screen controls, update and expand features built into the machine have not been all that useful and some border on being advertisements for buying Asus stuff .\\n7 Two other things that make this a superior computer are battery life, and the LED backlighting for the screen .\\n8 The ways the screen opens enables a smaller footprint when the case is closed, although it limits how far back the screen will tilt .\\n9 Surfing the net is a breeze, but I did have one blue screen of death when dealing with one demanding internet site .\\n10 The light weight, the battery life, the keyboard, the non, protruding removable battery, the bright screen, the track pad disable button and general ease of use makes it hard to beat .\\n11 I recommend minimizing the size of the scroll zones on the right and bottom, other wise you find the screen suddenly scrolling when you did not want it to do so .\\n12 zoom in or zoom out of a screen , but on occasion it will zoom when you don't want or expect it to because of an inadvertent gesture or touch by a thumb, etc .\\n13 The occasional blue screen of death unfortunately has not gone away Microsoft attributes it to an errant driver, but I have not been able to isolate what driver is the cause .\\n14 The screen is not as bright as my Acer .\\n15 There are 2 bios updates and the latest is for a brighter screen setting .\\n16 This makes the screen much brighter and as with all new computers it seems there are always important updates .\\n17 Also if you install Firefox web browser and push the f11 key the browser becomes full screen, helpful on a small screen .\\n18 I got used to the glossy screens a while ago this one is remarkably bright and vivid .\\n19 Now I keep getting the blue screen serious errors .\\n20 wrote it has crashed unexpectedly and displayed the blue screen of death numerous times .\\n21 Sometimes the blue screen of death appears for no discernible reason .\\n22 I began by considering netbooks with screens smaller than the now, standard 10 .\\n23 If money is your leading consideration, then one of these may be for you, but for just a bit more money you get a much better screen, better battery life, bigger drive, more upgradeable, etc .\\n24 But with screen brightness cranked up, bluetooth & wi, fi in constant use, some video playback , and internet radio running, I'm getting a good 8\\n25 With wi, fi off & the screen dimmed, I don't think I'll have a problem getting the stated 10 .\\n26 The keyboard is not quite perfect, the screen doesn't tilt back as far as I'd like, slightly higher resolution in the screen would be nice a new model not yet available in the U .\\n27 has an 11 screen with the same or better battery life, .\\n28 It's small with a very clear screen .\\n29 I've had the 1005HA, PU1X for a week now , on and running applications continuously , without a single crash, blue screen, or hangup .\\n30 The touchpad feels great, the boot up was fast, keyboard feels comfortable, and the screen is good .\\n31 My only complaint with it is that the screen doesn't go back far enough .\\n32 The touchpad works well, the screen glossy, ness really doesn't bother me, and it's not too bad of a fingerprint magnet .\\n33 On full screen display is smooth and no issues .\\n34 Some iTunes content is a little laggy if it is maximized display, but not full screen for some reason, but switching to full screen display has taken care of that issue for me .\\n35 And with a two, fingered gesture on the scratchpad, you can enlarge or shrink the screen .\\n36 It won't give you all the functionality of a full, sized laptop, and the small screen may take some getting used to, but no regular laptop gives you this kind of battery life, and most of the functions absent here aren't used by most people most of the time anyway, so if the tradeoff is fewer features for greatly, increased battery life, I'll take the latter .\\n37 On a full charge, with wireless on, screen brightness on medium, I get a reported 8 .\\n38 5 hours with no wireless, and screen brightness on minimum .\\n39 5 PASS , Screen is bright and large enough .\\n40 Once I configured Firefox to always run full screen mode , surfing was no problem with plenty of screen real estate .\\n41 All features worked excellently for me so far especially appreciate the touchpad lock button as well as the screen off function key .\\n42 heavy rearward weight bias so much that it wants to fall backwards with the screen pushed back all the way\\n43 the screen is STUNNING, and if you've got a bright light shining down on it, you've got a choice :\\n44 you can either move the screen to eliminate the glare, or move the lamp .\\n45 I'd far rather have this beautifully crisp screen and make the occasional adjustment for glare, than deal with a matte screen 24 7 .\\n46 One of the other complaints I'd come across is how for some, the screen doesn't tilt back far enough .\\n47 yeah, you'd probably want the screen to tilt far enough back to lay flat .\\n48 And if you can't wait to twist yourself into some contortion in bed where you need the screen to go back further than reasonable, you can always invest in one of those $20 lap desks , you know, the kind with the beanbag bottom, so that you can shift the desk into whatever ridiculous position will suit your fancy .\\n49 and I could have gotten a matte screen, but neither of those features impressed me .\\n50 Except for difficulties seeing the entire New York Times crossword puzzle all at once on the screen, the Asus satisfies my needs and seems about as fast as my 5, year, old IBM laptop .\\n51 I was also nervous about the fact that occasionally the image on the computer screen shivered , although it normally recovered from that .\\n52 Also considered lower, end 14, 15 screens for use of the DVD .\\n53 I like the gloss screen fine .\\n54 The screen is too small for any meaningful work, but the apps DO work .\\n55 Again, the screen is too small for this to be anything more than just satisfying from a purchase standpoint .\\n56 like others have said, it is definitely a fingerprint magnet, and the glossy screen can be a bit of a problem in some lighting conditions .\\n57 I received my Asus 1005HA yesterday installed the two gb ram and tried to turn it on and the screen remained blank .\\n58 The screen is small, only 1024 x 600 .\\n59 I can hear the windows but my screen is totally blank .\\n60 I can tell the backlight is on, but all I get is a black screen .\\n61 I don't even see the bios screen on startup .\\n62 The screen is sharp and bright .\\n63 The screen is clear and easily viewed in indoor environments .\\n64 With the view maximized, the screen is large enough to work on documents and read online research materials .\\n65 The fashionable glossiness of both body and screen acquires fingerprints and smears rapidly .\\n66 The shiny screen is reflective, which can be a problem if you have your back to a sunny window or work outdoors .\\n67 I keep the screen brightness set at about half and easily get more than eight hours with wi, fi on .\\n68 I don't know what the other reviewers are talking about as far as the screen brightness goes because my screen is far too bright at the higher end of the spectrum .\\n69 It is a fingerprint magnet, and because of the glossy screen, its very reflective of light .\\n70 , don't know why they use the screen size most do , 1024 x 600 seems cramped\\n71 Takes sometime to get use to the small screen .\\n72 yeah, the new LED screen technology is that good .\\n73 The screen resolution isn't the highest you can get but I found that the higher resolution netbooks usually had older prcessors for some reason .\\n74 I'm happy with the screen and resolution choices available .\\n75 I usually run IE8 in full screen mode with a 95% zoom setting and a 1024x600 resolution .\\n76 Surprisingly readable screen for the size .\\n77 4 DO NOT GET WAX ON YOUR SCREEN .\\n78 Hit F11 and you have full screen browsing , just move the cursor to the top of the screen for the controls .\\n79 The screen really is too small , 1024x600 is barely livable .\\n80 With the battery in the back the computer has most of its weight in the back so the computer easily tips back when the screen is opened all the way up .\\n81 Screen brightness is very satisfactory .\\n82 ASUS Docking is a program to have a quick menu on top of your screen to access all ASUS software .\\n83 The screen is easy to read in outside lighting conditions .\\n84 My other HP laptop has a mat screen surface and is almost impossible to read outside .\\n85 Long battery life, sharp looking machine, fingerprint magnet,glossy screen=glare,ease of use and portability .\\n86 The most noticeable difference is the screen and keyboard functionality .\\n87 The cover and screen are glossy and it has a 92% keyboard which is plenty comfortable .\\n88 The battery life is excellent, with normal usage I can get about 7 hours easily, more if I turn off WIFI and turn down the screen brightness .\\n89 One of the downside I have noticed is that the netbook is heavy near the hinge because that's where the battery is located and if you want to put it on your lap while sitting, you have to put your hand on the bottom chassis so that the netbook doesn't tip over, and the screen doesn't bend all the way backwards which can be annoy, otherwise this is a really nice netbook .\\n90 Screen is nice, and adequately sized, , use fullscreen browsing .\\n91 I also needed Web connectivity for research, a screen with a low squint factor and a keyboard that wasn't too cramped .\\n92 The screen size works just fine for me .\\n93 Having the touchpad feature of expanding zooming the presentation on the screen is a nice feature, but I have to admit having never needing to use it .\\n94 And it goes in that bag wrapped in the white paper plastic bag it was originally boxed up in, with another piece of packing plastic between the keyboard and the screen .\\n95 , I'm still getting used to the small screen .\\n96 Tiny screen compromises the experience of web surfing\\n97 I'll see the first black screen, it appears to be starting, and then stays with either a grey or black screen .\\n98 3 sometimes the screen will all of a sudden distort and I have to re, start to get it to work .\\n99 1 keyboard still floats 2the screen goes to a solid blue screen either right after starting or after it sits a while .\\n100 Great battery life, decent sized screen, and the keyboard was large enough to be comfortable to type on .\\n101 Very nice, in fact, though I strongly dislike glossy screens , no matter, I knew it would have one when I ordered it .\\n102 The battery life has been very good, especially if you follow the rule of turning off the wireless and bluetooth, and turning down the screen brightness .\\n103 9 screens, but felt that was too much of a sacrifice .\\n104 The screen is small but still large enough to read comfortably .\\n105 0 out of 5 stars Bad LCD Screen, October 7, 2009\\n106 I fired it up and out of the box it has a vertical red line on the LCD screen .\\n107 just a big dark, screen paperweight .\\n108 The netbook is light and sturdy, and it the screen looks great .\\n109 only 10, inch screen, small keyboard and no CD, ROM .\\n110 My advice is to visit a store to personally try the keyboard and screen size .\\n111 Decent speed processor, nice screen quality, great asus softwares , and very long battery life .\\n112 pretty decent screen quality .\\n113 although the screen is relatively small to my eyes it wasn't really hard to get used to the size and the screen is clear and bright, no prob reading articles and writing essays .\\n114 One of the things that I found difficult to get used to is the size of the screen .\\n115 10 can be enough for some, but it was kinda small for me, so the thing I did was try to max out the screens by removing unnecessary menus .\\n116 When using Internet explorer or Firefox, press F11 and the screen will enlarge, giving you some additional freedom and space .\\n117 GLOSSY SCREENS ARE THE STUPIDEST INVENTION OF THIS MILLENIUM .\\n118 Seeing reflections on the screen is just plain annoying .\\n119 As new netbooks come out, look for the ones with matt screen and see if it has a good feature set and price .\\n120 The screen is very sharp and readable even with the tiny text at this size .\\n121 With 1GB of RAM, it really isn't TOO bad to try to run Photoshop or something either , but the screen would be too small for something like that anyhow .\\n122 The battery life is unbelievable, even while using USB to transfer files, watching movies and surfing the internet with screen brightness all the way up .\\n123 Factory settings to preserve battery life have the screen luminescence set to 50% but can easily be adjusted to the necessary ambience illumination you may need .\\n124 The 1024x600 screen can be set, if you wish, so that it is a 1024x600 viewport to a larger 1024x768 desktop, reachable by moving the mouse to the screen edge .\\n125 This is useful if you have an application that demands a 1024x768 screen .\\n126 Screen appearance is enhanced by Asus software, and I do like the appearance and visibility in various lighting situations .\\n127 The 10 inch screen started getting to me on the Asus 1005 .\\n128 I love the capability of making the screen bigger or smaller with the mouse pad .\\n129 The mouse pad is very sensitive so I sometimes find myself on a different part of the screen if I accidentally touch something .\\n130 The screen is comfortable and sufficently bright for occassional use .\\n131 The screen is crisp and clear, and the unit runs great .\\n132 The greatest shortcoming is the small screen resolution .\\n133 Yes, screen is small, video card is weak, and keyboard is cramped, but this is the case for other netbooks at this price point .\\n134 I have not done an actual test of the full battery life but from what iv seen in general use it has around 9 hours while running wifi and other applications with around half screen brightness .\\n135 Streaming videos from Hulu and Netflix look incredible on this 10 inch screen .\\n136 The only minor issue that I have with 1005HA is that it does not allow the screen to rotate further .\\n137 The screen rotation angle is good enough for putting the netbook on desktop .\\n138 Due to the size of netbooks and a wide screen format, the screen should have been designed to be able to rotate all the way back to inline with the keyboard .\\n139 The screen is very bright and sharp with a maximum resolution of 1024x600 .\\n140 The 10, inch screen is bright and has good color, and the keyboard is only slightly smaller than a regular one .\\n141 Performance is good, screen very good, wireless very good, numerous USB ports, and keyboard layout is excellent .\\n142 It boots up quickly, especially after getting rid of the extra asus software that auto, boots at startup, its battery life is phenomenal, the screen is clear and easy to read, the keyboard is comfortable to type on and feels natural .\\n143 But even with that, and the glossy screen, fingerprint magnet, limited screen tilt, tinny speakers, and intermittent odd glitches, I still think it's a great value and would buy it again today if I were on the market for a netbook .\\n144 Now the screen is cracked with big black blotches as well .\\n145 Blue screen crashed several times .\\n146 Hard to see full web pages on small screen, resolution inadequate .\\n147 Instead I convert DVDs to DVIX AVI files using Fair Use Wizard and load them on to memory slot card and they play great, 700mb files look fine on this size of screen .\\n148 The screen resolution can be a little small at times, but that is a sacrifice I was willing to make .\\n149 Yes it does take some getting use to a smaller screen, the key board actually works better than my laptop though .\\n150 I was worried the screen size would be too small and uncomfortable to read, but it has been great for everything I run :\\n151 Most of my professors teach from Power Points, and it makes my life so much simpler having the PPT on my screen that I can annotate while listening to the lecture .\\n152 I have not accidentally knocked it over, but I think it could easily be done the screen is glossy .\\n153 Purchased this machine to enjoy the convenience of Windows and the larger screen .\\n154 years old, so the screen size was also a concern, but it is adequate for the type of things I use it for .\\n155 As soon as you connect the VGA cable to an unknown projector and press the function key for projection, it automatically adjusts the size and resolution to fit the projector even if it cannot display properly on its own screen .\\n156 The keyboard is great and the screen looks good .\\n157 It's also a shame that this model comes with a glossy screen .\\n158 I personally haven't had a problem with the screen, but it would be fairly unusable outdoors in the sun .\\n159 For this extra amount, I was looking for the larger screen, the longer battery life and the keyboard ergonomics .\\n160 I have more productivity flow on a conventional laptop with a full sized screen and keyboard .\\n161 This machine is plenty fast, it's just that if I try to do work with it , my office's order entry system as displayed on the netbook screen must be scrolled up and down since it's a chopped 1024 x 600 height screen, instead of the more usual 786 .\\n162 you lose those 186 pixels and even one line of a large order maintenance screen can require you to have to break the flow of productivity to scroll .\\n163 The small screen is probably the biggest drawback .\\n164 Could be better and don't use the highest resolution unless you want all of your stuff to have the wrong aspect ration on the screen It flattens it to make more visible .\\n165 Browsing is amazingly better by using full screen mode on browser with F11 .\\n166 That extra space the menu and address bar take up are sorely needed on this small screen .\\n167 In full screen browsing it is so much better that I would never go back .\\n168 Because the screen is so small in order to get the standard 1024x 768 display without having to scroll the normal screen the screen has to be smashed so the display is slightly altered .\\n169 One hint , there's a setting that lets you compress the screen which makes everything smaller and allows you to fit more on the screen .\\n170 I mostly find that when I make typos, it's not because of the keyboard, it's because of the smallness of the screen, , I just can't see what I'm doing as well as a laptop .\\n171 As others have noted, I wish the screen wasn't so reflective .\\n172 And maybe it's something I need to figure out how to fix, but I don't like the aspect ratio of the screen either .\\n173 Has all the features of my bigger laptop except a large screen .\\n174 1 inch screen is bigger than the 8 .\\n175 I want a netbook for portability, not screen real estate .\\n176 , I was willing to downsize my screen size in favor of portability and speed .\",\n \" , and is very, very accurate .\\n0 but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n1 This function is not accurate if you don't leave it in battery mode say, when you stop at the Cracker Barrell for lunch and to play one of those trangle games with the tees .\\n2 It provides immediate alternatives if the route from the online map program was inaccurate or blocked by an obstacle .\\n3 I've used other GPS units, as well as GPS built into cars and to this day NOTHING beats the accuracy of a Garmin GPS .\\n4 It got me from point A to point B with 100% accuracy everytime .\\n5 It has yet to disappoint, getting me everywhere with 100% accuracy .\\n6 0 out of 5 stars Honest, accurate review, , PLEASE READ !\\n7 Aside from that, every destination I've thrown at has been 100% accurate .\\n8 In closing, this is a fantastic GPS with some very nice features and is very accurate in directions .\\n9 Plus, I've always heard that there are quirks with any GPS being accurate, having POIs, etc .\\n10 DESTINATION TIME, , This is pretty accurate too .\\n11 But, it's always very accurate .\\n12 The map is pretty accurate and the Point of interest database also is good .\\n13 Most of the times, this info was very accurate .\\n14 I've even used it in the pedestrian mode, and it's amazing how accurate it is .\\n15 ONLY is only accurate when an ad says, Top sirloin steak, ONLY $1 .\\n16 The most accurate review stated that these machines are adjunct to a good map and signs on the interstate .\\n17 The directions are highly accurate down to a T .\\n18 Depending on what you are using it for, it is a nice adjunct to a travel trip and the directions are accurate and usually the quickest, but not always .\\n19 The screen is easy to see, the voice tells you where you are and it's very accurate .\\n20 It was accurate to the minute when it told me when I would arrive home .\\n21 0 out of 5 stars GPS Navigator doesn't navigate accurately on a straight road .\\n22 I was familiar with the streets and only used the Nuvi to get an accurate arrival time estimate .\\n23 but after that it is very easy and quite accurate to use .\\n24 The accuracy at this point is very good .\\n25 While the 255W routing seems generally accurate and logical, on my first use I discovered that it does have some errors in its internal map .\\n26 Bottom line is I wanted a unit that is accurate and had reliable satellite connection .\\n27 I've used it around town and find it to be extremely accurate .\\n28 I found the maps to be inaccurate at first, but after I updated them from Garmin's website everything is golden .\\n29 A lot of my friends' addresses are inaccurate by any GPS .\\n30 It loads quickly, have pretty accurate directions, and can recalculate quickly when I miss a turn .\\n31 Because the accuracy is good to the street address level, it may not be able to guide you to the exact location if your destination is inside a shopping mall .\\n32 I updated to the latest 2010 map soon after I received the unit, so the map is accurate to me .\\n33 I was blown away at the accuracy and routing capability this thing had .\\n34 I used it the day I bought it, and then this morning, and as soon as it comes on it is ready to navigate The only downfall of this product, and the only reason I did not give it 5 stars is the fact that the speed limit it displays for the road you are on isn't 100% accurate .\\n35 If your looking for a nice, accurate GPS for not so much money, got with this one .\\n36 0 out of 5 stars Inexpensive, accurate, plenty of features, August 6, 2009\\n37 The only glitch I have found so far is that the speed limits are not 100% accurate, although the GPS, amazingly, is able to very accurately tell you how fast your vehicle is moving .\\n38 I was a little disappointed in the inaccuracy of the posted speed limit, as I'm guilty of not paying close enough attention to those signs, especially w interstate speed traps that are constantly changing up and down .\\n39 The closest one that gives the most accurate route that I usually take is the Navigon .\\n40 After 2 weeks, it has yet to make a mistake, and is always completely accurate , even to the point of telling me which side of the street my destination is on .\\n41 It has worked well for local driving giving accurate directions for roads and streets .\\n42 The estimated time to arrival does not seem to calculate the travelling time accurately .\\n43 Accuracy is as good as any other unit, they all sometimes tell you you have arrived when you haven't, or continue to tell you to turn when you're already there .\\n44 Accuracy is determined by the maps .\\n45 Less traveled rural roads will not be accurate on any unit .\\n46 Accuracy is within a few yards .\\n47 What the 255w does best is find a street address, business, point of interest, hospital or airport and give you turn, by, turn directions with amazing accuracy .\\n48 The Garmin is loaded with very accurate maps that generally know the roads in even the remotest areas .\\n49 I'm really glad I bought it though, and like the easy to read graphics, the voice used to tell you the name of the street you are to turn on, the uncannily accurate estimates of mileage and time of arrival at your destination .\\n50 My new Garmin 255w had very Easy Set Up, Accurate Directions to locations, User Friendly Unit to anyone in my vehicle who tried it .\\n51 I had a GPS 10, years ago when I owned a boat that was difficult to use and with very poor accuracy so I had assumed that the road GPS wasn't any better .\\n52 Practiced visiting places I already knew to see how accurate the directions and maps would be .\\n53 Easy to use, excellent accuracy, nice and intuitive interface .\\n54 The directions provided have all been quite accurate thus far .\\n55 , Very Accurate but with one small glitch I found , I'll explain in the CONS\\n56 This is a great GPS, it is so easy to use and it is always accurate .\\n57 Very easy to operate and pretty accurate as well, only led me astray once and that was in northern Maine where roads are few and paved ones fewer .\\n58 Easy to use and amazed at how accurate this item is .\\n59 To date it's been a very easy to use and accurate .\\n60 Mounted really easily and has been very accurate .\\n61 seems to be rather accurate .\\n62 It was accurate on determing original directions and recalculating when necessary .\\n63 Highly accurate, POIs are great .\\n64 I can't believe how accurate and detailed the information estimated time of arrival,speed limits along the way,and detailed map of my route, to name a few .\\n65 Speed of calculation, accuracy, and simplicity of operation are top notch .\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 0\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 12 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Cluster #0은 전자기기에 대한 리뷰로 군집화되어 있음" + ], + "metadata": { + "id": "EELWw1uCft49" + } + }, + { + "cell_type": "code", + "source": [ + "document_df[document_df['cluster_label']==1].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "G0Q3--nEf5sj", + "outputId": "3f375096-d5aa-4a3a-9a74-00b7177a3558" + }, + "execution_count": 13, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "4 bathroom_bestwestern_hotel_sfo \n", + "14 food_holiday_inn_london \n", + "12 food_swissotel_chicago \n", + "46 free_bestwestern_hotel_sfo \n", + "45 location_bestwestern_hotel_sfo \n", + "20 location_holiday_inn_london \n", + "5 parking_bestwestern_hotel_sfo \n", + "47 price_holiday_inn_london \n", + "7 room_holiday_inn_london \n", + "50 rooms_bestwestern_hotel_sfo \n", + "22 rooms_swissotel_chicago \n", + "28 service_bestwestern_hotel_sfo \n", + "24 service_holiday_inn_london \n", + "9 service_swissotel_hotel_chicago \n", + "29 staff_bestwestern_hotel_sfo \n", + "35 staff_swissotel_chicago \n", + "\n", + " opinion_text \\\n", + "4 The room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ... \n", + "14 The room was packed to capacity with queues at the food buffets .\\n0 The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n1 ... \n", + "12 The food for our event was delicious .\\n0 ... \n", + "46 The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n0 They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n1 ... \n", + "45 Good Value good location , ideal choice .\\n0 Great Location , Nice Rooms , Helpless Concierge\\n1 ... \n", + "20 Great location for tube and we crammed in a fair amount of sightseeing in a short time .\\n0 All in all, a normal chain hotel on a nice lo... \n", + "5 Parking was expensive but I think this is common for San Fran .\\n0 there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n1 ... \n", + "47 All in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\n0 ... \n", + "7 We arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave u... \n", + "50 Great Location , Nice Rooms , H... \n", + "22 The Swissotel is one of our favorite hotels in Chicago and the corner rooms have the most fantastic views in the city .\\n0 The rooms look like they were just remodled and upgraded, there was an HD TV and a nice iHome docking station to put my iPod so I could set the alarm to wake up with my music instead of the radio .\\n1 ... \n", + "28 Both of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n0 The service was good, very friendly staff and we loved the free wine reception each night .\\n1 ... \n", + "24 not customer, oriented hotelvery low service levelboor reception\\n0 The room was quiet, clean, the bed and pillows were comfortable, and the serv... \n", + "9 Mediocre room and service for a very extravagant price .\\n0 ... \n", + "29 Staff are friendl... \n", + "35 The staff at Swissotel were not particularly nice .\\n0 Each time I waited at the counter for staff for several minutes and then was waved to the desk upon my turn with no hello or anything, or apology for waiting in line .\\n1 ... \n", + "\n", + " cluster_label \n", + "4 1 \n", + "14 1 \n", + "12 1 \n", + "46 1 \n", + "45 1 \n", + "20 1 \n", + "5 1 \n", + "47 1 \n", + "7 1 \n", + "50 1 \n", + "22 1 \n", + "28 1 \n", + "24 1 \n", + "9 1 \n", + "29 1 \n", + "35 1 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
4bathroom_bestwestern_hotel_sfoThe room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ...1
14food_holiday_inn_londonThe room was packed to capacity with queues at the food buffets .\\n0 The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n1 ...1
12food_swissotel_chicagoThe food for our event was delicious .\\n0 ...1
46free_bestwestern_hotel_sfoThe wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n0 They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n1 ...1
45location_bestwestern_hotel_sfoGood Value good location , ideal choice .\\n0 Great Location , Nice Rooms , Helpless Concierge\\n1 ...1
20location_holiday_inn_londonGreat location for tube and we crammed in a fair amount of sightseeing in a short time .\\n0 All in all, a normal chain hotel on a nice lo...1
5parking_bestwestern_hotel_sfoParking was expensive but I think this is common for San Fran .\\n0 there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n1 ...1
47price_holiday_inn_londonAll in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\n0 ...1
7room_holiday_inn_londonWe arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave u...1
50rooms_bestwestern_hotel_sfoGreat Location , Nice Rooms , H...1
22rooms_swissotel_chicagoThe Swissotel is one of our favorite hotels in Chicago and the corner rooms have the most fantastic views in the city .\\n0 The rooms look like they were just remodled and upgraded, there was an HD TV and a nice iHome docking station to put my iPod so I could set the alarm to wake up with my music instead of the radio .\\n1 ...1
28service_bestwestern_hotel_sfoBoth of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n0 The service was good, very friendly staff and we loved the free wine reception each night .\\n1 ...1
24service_holiday_inn_londonnot customer, oriented hotelvery low service levelboor reception\\n0 The room was quiet, clean, the bed and pillows were comfortable, and the serv...1
9service_swissotel_hotel_chicagoMediocre room and service for a very extravagant price .\\n0 ...1
29staff_bestwestern_hotel_sfoStaff are friendl...1
35staff_swissotel_chicagoThe staff at Swissotel were not particularly nice .\\n0 Each time I waited at the counter for staff for several minutes and then was waved to the desk upon my turn with no hello or anything, or apology for waiting in line .\\n1 ...1
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"document_df[document_df['cluster_label']==1]\",\n \"rows\": 16,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 16,\n \"samples\": [\n \"bathroom_bestwestern_hotel_sfo\",\n \"food_holiday_inn_london\",\n \"location_holiday_inn_london\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 16,\n \"samples\": [\n \" The room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 Large comfortable room, wonderful bathroom .\\n2 The rooms were nice, very comfy bed and very clean bathroom .\\n3 Bathroom was spacious too and very clean .\\n4 The bathroom only had a single sink, but it was very large .\\n5 The room was a standard but nice motel room like any other, bathroom seemed upgraded if I remember .\\n6 The room was quite small but perfectly formed with a super bathroom .\\n7 You could eat off the bathroom floor it was so clean .\\n8 The bathroom door does the same thing, making the bathroom seem slightly larger .\\n9 bathroom spotless and nicely appointed .\\n10 The rooms are exceptionally clean and also the bathrooms .\\n11 The bathroom was clean and the bed was comfy .\\n12 They provide you with great aveda products in the bathroom .\\n13 Also, the bathroom was a bit dirty , brown water came out of the bath tub faucet initially and the sink wall by the toilet was dirty .\\n14 If your dog tends to be a little disruptive or on the noisy side, there is a bathroom fan that you can keep on to make noise .\\n15 The bathroom was big and clean as well .\\n16 Also, the bathrooms were quite well set up, with a seperate toilet shower to basin, so whilst one guest is showering another can use the basin .\\n17 The bathroom was marble and we had luxurious bathrobes and really, every detail attended to .\\n18 It was very clean, had a beautiful bathroom, and was comfortable .\\n19 The bed was comfortable and the bathroom was clean with a nice selection of toiletries .\\n20 The bathroom was an adequate size .\\n21 First, from day one our bathroom had a urine smell that never went away .\\n22 Otherwise the bathroom was decent enough , decent temperature and decent water pressure .\\n23 Bathroom shower curtain reeked of mildew enough to smell up the room .\\n24 The bed was comfortable and the rooms and bathrooms were kept clean and although the refrigerators are honour bars the hotel is happy for you to chill your own drinks in them .\\n25 The room was very nice, and had a nice bathroom .\\n26 The room was wonderful with great beds, a nice bathroom and we also had an excellent view of Coit Tower as well .\\n27 The room was small, with a king bed, and a truly claustrophobic bathroom .\\n28 Amenities , While this hotel isn't a luxury property, they have some nice touches like marble bathrooms, mini bar, room service and an evening wine reception every day .\\n29 The bathroom was clean, well lit, and always well stocked with shampoo etc and towels .\\n30 The only odd thing was the bathroom door and room door opened outwards into the room and hallway respectively .\\n31 Room spacious 2 double beds gave us plenty of room, the beds were comfortable and the bathroom was a good size .\\n32 The bathroom was large and included a mounted makeup mirror .\\n33 The rooms are abit smallish , but immaculately maintained, and tastefully decorated, with excellent bathroom facilities .\\n34 Shower bathroom was good with good shower and plenty of space .\\n35 Both the bedroom and bathroom had plenty of room .\\n36 large clean bathrooms fully stocked with everything needed .\\n37 However, when we arrived at our room there was a maintenance worker there measuring the bathroom counter, so maybe they're doing work in some units .\\n38 The room was large and very comfortable with a nice large bathroom .\\n39 There is a wall, mounted hair dryer in the bathroom .\\n40 The thing that bothered me the most was the bathroom was very dated .\\n41 There is virtually no counterspace in the bathroom at all .\\n42 Upon our arrival, there was a SLIGHT odor in bathroom but nothing worth complaining about .\\n43 The bathroom was adequate with thick, fluffy towels .\\n44 The bathroom was large and private .\\n45 The bathroom was very clean and well appointed with nice towels and toiletries, it was not big, but room enough to do what one needs to .\\n46 The Tuscan Inn room was quite nicely appointed, the bed was comfortable the chairs TV adequate, the bathroom reasonably good .\\n47 my only real complaint would be that the bathroom does not have a separate vanity area, so 2 people getting dressed had to improvise, which was kind of surprising since the bathrooms were all redone on 2005 .\\n48 The clever use of mirrors behind the bed helped to create the illusion of space, however, in reality the room was cramped and with two of us trying to use the hand basin and bathroom at the same time was particularly awkward .\\n49 The bathroom containing the toilet and the shower was also very small, not to mention the sink and counter directly outside of it .\\n50 Turning the bathroom light on also turns the counter light on, meaning a middle, of, the, night trip to the bathroom means the whole side of the room gets illuminated and the wooden shutters that were installed in place of traditional curtains to add to the hotel's theme do absolutely nothing to keep the room dark once the sun comes up .\\n51 The room was a good size but the bathroomm was very small .\\n52 Bathroom was adequate and clean and there was a hairdryer .\\n53 The wash basin was in the room without any privacy and there was a small bathroom for the toilet and bath shower .\\n54 The bathroom had not been remodeled in alignment, but it was all very clean and perfectly acceptable .\\n55 The bathroom had several problems .\\n56 Bathrooms were also very nice .\\n57 The shower stall could have been bigger as the bathroom itself was pretty large .\\n58 Then they gave us a room which had a view of a wall, a tiny bathroom so small in fact that the sink had to be in the bedroom .\\n59 The room is not the most modern room but there was tons of space especially in the bathroom .\\n60 We may have had an ADA room because it was pretty big with large bathroom , it was room 459 , and the room had all the amenities we were looking for .\\n61 The room and bathroom were perfect in size, just what is needed .\\n62 The only possible complaint was that the sink in the bathroom had a crack in it, but it did not bother me enough to ask for a different room .\\n63 Bathrooms, though, are plenty big .\\n64 Although the rooms were clean and fresh, one of ours had several small problems , the phone didn't work, the bathroom door handle was quite loose, and the thermostat didn't work properly .\\n65 It represents value for money, the rooms and bathrooms were impeccably clean, fresh linen daily, and the staff extremely helpful and friendly .\\n66 There were plenty of thick towels in the bathroom, and all the usual toiletries, hair, dryer, etc .\\n67 I really didn't get a chance to experience the staff's level of service but the rooms are small as is the bathroom .\\n68 The bathroom was also small it was difficult to close the door once inside to avoid the door hitting you no joke !\\n69 Some rooms had the bathroom sink outside the bathroom, which we would have preferred, but our sink was inside the bathroom .\\n70 The bathroom was clean and bright and the toiletries were so good that we took the leftovers home because there was a website selling the shampoo listed on the bottle .\\n71 The rooms were very nice, could of use just a little more shelf space by the bathroom sink .\\n72 The bathroom was clean but a little dated .\\n73 The only thing wrong with the room was the bathroom, it was not up to the standard of the rest of the decor but it was clean and large enough .\\n74 The bathroom was just okay, but for the price we survived .\\n75 Hair dryer in bathroom constantly fell in sink from it's holder when anyone used the door to our room .\\n76 The reasonable price of the hotel allowed us to book 2 rooms, thus giving the 4 of us a bit more space and 2 bathrooms .\\n77 Plenty of room in the bathroom .\\n78 Nice clean rooms and a spaciousbathroom .\\n79 The only minor downside, as a few others have mentioned, is the bathroom sink lighting .\\n80 Did not like the bathroom light shining into bedroom .\\n81 Only negative is the bathroom area is a little small .\\n82 Our suite we had was small there was pubic hair on the bathroom floor from ?\\n83 bathroom a little on the older side .\\n84 The bathroom needed a face, lift also .\\n85 The bathrooms are quite small compared to other hotels but adequate .\\n86 The hotel was of a good standard, big clean rooms, decent bathroom and the free wine reception in the evening was an added bonus .\",\n \" The room was packed to capacity with queues at the food buffets .\\n0 The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n1 There are a couple pubs, a great patisserie and even fast food restaurants within a block .\\n2 The neighborhood is an upscale residential area full of restaurants in easy walking distance ranging from fast food to up, scale with a wide variety of cuisines , , we never had a bad meal .\\n3 The food was wonderful, a selection of sandwiches, salads, cous cous and spicy wedge potato's, fruit salad and a cake was a good fill up when needed .\\n4 Full English breakfast was included in our rate and was very good indeed , staff were busy clearing tables promptly and fresh food kept arriving all the time .\\n5 One local restaurant stood out for having excellent food, Olives located one block away .\\n6 , Great location , Very good selection of food for breakfast buffet .\\n7 I can't see what sets it apart from other 3, star hotels I've stayed in , other than the fact it's in London, in a posh area and has good food .\\n8 We ate breakfast at the hotel a couple of days and thought it was overprice for the quality of food .\\n9 There are plenty of restaurants in the area as well, including fast food joints and two small, ish supermarkets .\\n10 They also have a great room service menu and was surprised at the big portions and quality of the food, great to get a bit in your room after a night on the town .\\n11 Breakfast equally tired , although a reasonable selection of food, general ambience in restaurant more like a youth hostel .\\n12 The breakfast buffet full English breakfast was fantastic with a very good selection of food .\\n13 really nice hotel for buissnessnot much around in terms of shoppin etcfood was ok\\n14 Everything about this hotel was first class including the food !\\n15 The nicest surprise was how fantastic the food was which I hadn't expected in a large chain hotel .\\n16 It is very convenient to the Gloucester Road tube stop, grocery store, drug store and fast food places .\\n17 I ordered room service one night, and the food was delightful, and the service was fast and friendly .\\n18 The location is just around the corner from the tube, Boots and Waitrose right next door, close to many restaurants including fast food if you like .\\n19 Talking about food, something worth noticing is that there was a fridge in the room, but it was completely reserved for the mini, bar service beverages, which completely filled it .\\n20 There was a massive queue for the restaurant, the food was beginning to run low we went down at 9 .\\n21 There were Italian, Indian, British, American fast food, and Thai restaurants very close to the hotel on Cromwell Gloucester Rds .\\n22 Room service is expensive but good, the food was delivered hot and was tasty but was chosen from the current uninspired Holiday Inn room service menu, when I ordered a \\u00a36 .\\n23 You could buy food from Sainsburys or Waitrose which were 2 minutes away to save money .\\n24 Food Drink a little pricey in local establishments .\\n25 95 if you want hot food as well .\\n26 Note that all around the hotel are decent little cafes and shops to get either full breakfasts or breakfast foods .\\n27 We ate on evening once at the Garfunkels pub in the mall, it was typical chain restaurant food but fast with good service .\\n28 There was an adequate self service buffet, not a huge selection or very well presented, cloths were not changed when food got spilt .\\n29 Not exactly what most tourists are looking for but when you have been out of the states as long as we have you eat fast food when you get the chance !\\n30 There is no mini, fridge in standard rooms, so you can't store any food , the hotel used to have mini, fridges .\\n31 Poor customer service, bad and overpriced pub food .\\n32 There is a grocery store close by that you can pick up food and a Starbucks nearby .\\n33 As mentioned, there are several places to buy food if you're going cheap :\\n34 The hotel is just a couple of minutes walk from the nearest tube station and also has a Waitrose , Tesco and various Fast Food joints and restaurants nearby .\\n35 Shame that we had to use the forum restaurant this morning prior to check out , this restaurant is on the first floor and is one of the buffet style breakfasts so lukewarm food and very busy .\\n36 The food is very, very good and the staff were very friendly .\\n37 The hotel itself was very pleasant , the staff friendly and helpful and I can only comment on the breakfasts as this was the only meal that we had there , the food was excellent with a wide variety of choice .\\n38 The food was excellent, the service was very friendly and the prices cheap .\\n39 The food is excellent and the service great .\\n40 The bar food actually looked pretty inviting as it passed by .\\n41 If you like Indian food we ate at the Dehli Brassiere it was exellent and more reasonably priced .\\n42 I would recommendeating out as the evening food is frozen re, heat type and for the price you are paying it is not simply worth it .\\n43 You can buy drinks and breakfast food at a Waitrose supermarket and Tesso express mart next door .\\n44 The area has a few pubs, a couple of steak places, a number of Indian restaurants and some fast food, so it's convenient for that .\\n45 Within 200 yards of leaving the hotel and heading to the Tube Station you have a number of fast food outlets, highstreet Restautants, Pastry shops and supermarkets, so if you did wish to live in your hotel room for the duration of your stay, you could do !\\n46 as for the continental breakfast taste was good but became boring after the 3rd day the food served wasnt changed .\\n47 We ate in the bistro downstairs and the food was very good , although the portions varied significantly depending on the chef that night .\\n48 The buffet breakfast is ok although not the best I've had and usually includes a selection of fresh fruit as well as the usual 'full english' The food in the ground floor restaurant is good I haven't had problems with room service although the menu has recently changed and doesn't have as good a selection as it did .\\n49 When the food arrive it was the wrong order .\\n50 I can also tell you that there is nothing fantastic about the food .\\n51 While travelling out of London to any of the popular destinations, food can be pretty expensive .\\n52 The rooms have never disappointed and the food is always nice .\\n53 Breakfast was OK, great choice, but the cooked food was a bit tepid .\\n54 The area is really safe with great food, boots, tesco, waitrose burger king, kfc and starbucks .\\n55 Additionally, they recommended the Cafe Forum which was about two blocks from the hotel for breakfast, the prices were reasonable and food was excellent .\\n56 00, good quality food, lots of choice, continental, full english, hot and fresh, very friendly staffs .\\n57 There is 24 hour room service, a restaurant, and a tavern in the hotel although we did not sample the hotel food .\\n58 Many hotels I have stayed in the food has been rarely hot .\\n59 The bed was very comfortable, and the empty refrigerator was a great place to store food and beverages .\\n60 Within easy reach you have all you could want peaceful areas and shops and food outlets .\\n61 I can't comment on any of the hotel restaurants or food as we never ate there with so many other choices nearby .\\n62 Avoid the food in the hotel restaurant as it is ridiculously overpriced .\\n63 Also there is a nice bistro around the corner with very good food that is moderately priced .\\n64 The food here is great, we had breakfast brought to our room, although pricy well worth it .\\n65 Minimall with Boots pharmacy, Whole Foods type ritzy fullservice market, coffee shops, etc .\\n66 Would not recommend the Patisserie food looked overpriced, pastries were dry !\\n67 Food is overpriced everywhere due to $ to pound conversion of course .\\n68 there are a variety of priced places to eat in the immediate area, but the food costs are always high, we ate mostly at pubs, where the beer and scotch were very reasonably priced always !\\n69 More than enough food choices with coffee or tea, juice, pastries, toast, yogurt, cereal and assorted cold cuts to please every taste .\\n70 Another good thing is that the rooms have mini, fridges and it's great for storing ready, to, eat food from Waitrose .\\n71 they mark down their food at the end of the day and you can get great deals on everything from sandwhiches to desserts at a fraction of the cost .\\n72 The food in the restaurant is terrible .\\n73 Both of these offer good variety of good food at very reasonable prices and suitable for children .\\n74 The Glouster Road tube station is just two minutes away, along with other food stores, pubs, internet cafes, restaurants etc .\\n75 Its a chain but the food was cheap and delicious !\\n76 Stunning food, amazing service .\\n77 We didn't eat at the hotel , there were some great cafe's just around the block with great food at a much better price .\\n78 If you're a family vacation traveller, you'll probably make use of the grocery store often becuse food in London is expensive when you consider the terrible USD, GPB exchange rate .\\n79 Many restaurants in the neighborhood, ranging from swanky to fast food to haute cuisine .\\n80 There are coffee and pastry shops around the corner and fast food .\\n81 There is also a grocery store in a shopping plaza on the corner where you can buy take out food, wine, etc .\\n82 It was in a fantastic position, one block to the Gloucester Road tube station there's a supermarket and fast food shops, as well as other shops nearby and opposite the station .\\n83 But it's great value for money, great location, pleasant staff, good food, and we'll be staying there again .\\n84 Food was OK, service very haphazard .\\n85 The range of food available would have satirfied anyone, all well cooked and efficiently replenished .\\n86 I didn't sample any of the food options but there are several outlets just around the hotel .\\n87 The huge coffe bar in the lobby is quite nice and offers drinks and food at good prices .\\n88 The Delhi Brasserie restaurant recommended by the hotel's concierge was a short walk, the food delicious and reasonable .\\n89 The food was good and the service was very good .\\n90 Additionally, there are numerous restaurants everywhere ranging from fast food to upscale .\\n91 There was also a more expensive English breakfast with many hot foods which was included in some room prices .\\n92 The frig doesn\\u0092t keep items cold enough for food safety \\u0096 it\\u0092s merely to slightly chill .\\n93 The Waitrose Market sells yummy food .\\n94 I want close proximity to tube station, starbucks, and food .\\n95 Food was expensive, but that is true all over London just now .\\n96 The Waitrose supermarket has many take out food options .\\n97 Another reviewer mentioned the smell of food on the 25th floor .\\n98 Very convenient, but don't stay on that floor as the smell of heating food wafts down the corridor .\\n99 The best food deal in this area is the local grocery store down the street , get your breakfast and lunch here and dine out nightly .\\n100 One block from the tube, half a block from a nice grocery store for essentials like bottled water, snacks and takeaway prepared food, tissues, etc .\\n101 Food quality was good, service prompt, everything prepared as we had ordered .\\n102 The food in their pub as far as sandwiches etc, was reasonable .\\n103 Food in Pub is excellent value .\\n104 All the 4 nights we stayed there we relished the hot Indian food takeout from the WaitRose grocery chain, which is just around the corner .\\n105 Really good Indian food is just a few blocks away .\\n106 There is an Internet cafe, laundramat and Sainsbury grocery store to the left up Cromwell Road and fast food, Banks and post offices to the right down Cromwell road .\\n107 It is in a nice neighborhood with fast food, resturants, and shopping with in walking distance .\\n108 because it has sensor to count how many times you open it for beverage service, nice area, near Starbucks, pastry shops, fast foods, supermarket, walking distances to Kensington Palace, London Natural Science Museum, Harrods, Victoria Albert Musuem, pubs, and what else could you ask for .\\n109 The food was delicious in both the Consortia and Forum restaurants in the hotel .\",\n \" Great location for tube and we crammed in a fair amount of sightseeing in a short time .\\n0 All in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\n1 Great Price Terrific Location .\\n2 The location is absolutely wonderful .\\n3 Our main focus before booking was looking for a low price with good location .\\n4 Very Good Value , Excellent Location .\\n5 The location is ideal for travel all over the city via the Underground .\\n6 Excellent hotel in prime location .\\n7 Good Location Horrible Service Disgusting Procedures .\\n8 First and foremost, the good, yes it has good location, a block away from Gloucester Road Tube Station .\\n9 The convenient location and competitive rates finally sold us on a repeat visit .\\n10 The location of this hotel is it's best feature , two blocks from the tube on lines that run to most major attractions .\\n11 The saving grace of this hotel, is the friendly staff and its location in Kensington .\\n12 The positives were the location, a block from the Gloucster Rd .\\n13 The public areas are fine if bland, the rooms comfortable if slightly cramped, the location good for tube and bus but just a little 'distant' .\\n14 Its saving grace is its location .\\n15 The location is excellent , near to the Tube and walking distance of a lot of attractions .\\n16 Turned out to be this excellent property in a prime location .\\n17 Location could not have been better with the Gloucester Road tube station just a few minutes' walk from the hotel .\\n18 Bottom line is that I would definitely return to this property for its comfort and convenient location .\\n19 Great Location clean good place to stay !\\n20 Overall, I would recommend this hotel to friends, and would probably stay here again, because it was such a great location and clean .\\n21 Even better is the hotel's location , literally a two, minute walk around the corner and you're at the Gloucester Road Tube Station and a host of small shops, pubs and eateries .\\n22 Great stay friendly service great location .\\n23 I would say this is a better than standard HI and the location just can't be beat .\\n24 I am giving a 'very good' based on staff, rates,and location .\\n25 We liked the location and decided to stay again .\\n26 The location close to a tube station and a grocery store is ideal .\\n27 average hotel in a good location .\\n28 This hotel is in a good location .\\n29 If you want a reasonably priced place to stay in London in a convenient location, then this is a good choice !\\n30 Excellent Hotel Excellent location Would definately stay again !\\n31 In London its often hard to find good location and good customer service in the same place , The Holiday Inn Kensington Forum did that for me and I couldn't ask for more .\\n32 It's rated 4, stars, but I also stayed at an equivalently rated Marriott while in London, and a 3, star Holiday Inn Express in Scotland, and the service and rooms were much better at the other locations .\\n33 great hotel in a lovely location .\\n34 Excellent location next to Gloucester Road tube station that has 3 train lines making getting around London really easy .\\n35 Good location one excellent concierge but problems .\\n36 The location of the hotel is really good .\\n37 Great Location for Sightseeing .\\n38 Efficient hotel with a good location .\\n39 The location is a block away from the underground station on the Picadilly Line direct from Heathrow Airport .\\n40 Excellent Hotel , Great Location .\\n41 Good Location New Room Bad Service .\\n42 The hotel was a great location just 1 block from Tube, Grocery Stores, Pharmacy and 2 blocks from Natural History and Victoria Albert Museums .\\n43 Convenient location not 4, star room and services but OK .\\n44 Great location but definitely NOT a 4 star hotel .\\n45 LOCATION , this hotel is located around the block from the Gloucester tube station and a few ATM machines .\\n46 Great location but is it really 4 star ?\\n47 , Great location , Very good selection of food for breakfast buffet .\\n48 The location was only a five minute walk from the Gloucester Road Tube stop .\\n49 Great location, near Gloucester Road tube station, handy cluster of cafes, shops, couple of pubs, plus supermarket in the station complex .\\n50 For the price and location, this was a very great hotel .\\n51 Good location clean and comfortable .\\n52 Great location but not sure it's worth the money .\\n53 What you are really paying for at this hotel is location and in hotel restaurants .\\n54 Fantastic location very close to the tube and buses .\\n55 It was a pretty good value and in a good location .\\n56 We wanted something more spacious, but this hotel had extremely convenient location and good reviews, so we decided to stay there .\\n57 The positives, great location, just a few minutes from a tube station which makes touring easy and with a travelcard taking midday breaks is easy .\\n58 Apart from the location, the hotel was really not up to standard .\\n59 It is a great location, the rooms are a bit basic, but clean and we actually got a pretty good view this time .\\n60 excellent location friendly staff .\\n61 went for a city break with the family hotel good location harrods 20 mins walk,royal albert hall 10 mins,and under ground around the corner,plenty to see and do around hotel .\\n62 One good aspect of this hotel was the location, it is about 2 blocks to the tube station, shopping and eating .\\n63 Not too easy to find rooms for more than two people in London unless you compromise on a few things, such as cost, location etc .\\n64 Location is not very good since one has to travel by tube to shop or sightsee .\\n65 The location to the Gloucester Road tube station was very handy .\\n66 We chose it due to its location i .\\n67 Great location for first time traveller .\\n68 When I approached one stewardess, she assured me that her airline used Holiday Inn Kensington Forum on a regular basis because of its location .\\n69 Hotel was super average nothing great about it at all except the location .\\n70 Since everyone starts with the good that I agree with , great location, very clean, I'll state the not, so good .\\n71 One of the best features of this hotel is the LOCATION .\\n72 The hotel's location is perfect for sightseeing and shopping and the Tube .\\n73 Location great but hotel dated .\\n74 Tower block hotel in fantastic location near good shops, bars and restaurants .\\n75 The positives about the place are the views from the windows if you have an upper floor room, and the location next to Gloucester Road tube station and a small shopping area .\\n76 For a little extra money, the soon to be Crowne Plaza over the road offers far better service yet with the same great location\\n77 Nice hotel with great location for transportation .\\n78 We've stayed at this hotel before and it's always been a great choice for it's location, cleanliness and staff .\\n79 very good location, next to underground station, very near to city center .\\n80 Convenient location Great Concierge service .\\n81 It isn't the most central location but I found it easy enough to get into London .\\n82 I would definitely stay here again for the location and the great customer service .\\n83 Great location and above average rooms .\\n84 For the price and the location I thought this place was great .\\n85 The location is just around the corner from the tube, Boots and Waitrose right next door, close to many restaurants including fast food if you like .\\n86 Its location is probably the first thing worth mentioning, being a 10 minutes walk from the natural history museum, a 15 minutes walk from beautiful Hyde Park and just behind the corner of the Gloucester Road underground station .\\n87 Even otherwise, no matter if it's going to cost you a bit more, I'd still recommend it, considering its location and overall standards .\\n88 There was a lot of road noise, but this is only to be expected, given the location .\\n89 Location is great, 5 mins walk to the Natural History Museum, 15 to Kensington High St and 2 mins to the tube and in a high room you can see for miles .\\n90 Location was excellent with close proximity to tube station We will definitely stau here again , good value\\n91 Great location for the tube and bus !\\n92 Also it is perfect for the Gloucester Road tube station with direct trains to Heathrow airport terminals,very good location turn right as you exit the station the hotels a 3 minute walk on your right hand side .\\n93 Location is very close to Gloucester Road Tube so easy to get into central london for the tourist sites .\\n94 Some positives are that it is in a good location for the tube .\\n95 It's a great location , literally a minute's walk to Gloucester Road tube station, 5 mins walk to the Victoria Albert Museum and the British Science Museum .\\n96 But for the price, and the favourable location, we were content .\\n97 pleasant hotel very good location .\\n98 Great location for all London has too offer .\\n99 The hotel is in a very good location for touring London .\\n100 Clean rooms, great location, close to the Gloucester Tube entrance .\\n101 The one standout is location , , it's only about a block from the Gloucester Rd tube station, which is on the Picadilly line that connects to Heathrow, so being on the west side of London, it's a shorter ride to and from aiport and a very short walk to your hotel with no changes, and then you are close to public transport for the rest of your stay .\\n102 Good hotel for the price nice location .\\n103 No noise problems and a nice, convenient location .\\n104 Perfect Location and Excellent Hotel .\\n105 Room , clean, good size, everything you need is in the room including the coolerLocation , within every attractions, short walk or you can take the double decker just across the street .\\n106 Great location , good value place to stay .\\n107 The Holiday Inn Kensington Forum benefits from a fantastic location, right next to Gloucester Road Tube or to Paddington Station for the Heathrow Express .\\n108 Believe me, the location alone is worth the stay .\\n109 The location is fantastic near Gloucester Station which was very handy for all our needs in transport !\\n110 The breakfast we had 1 morning was to say the least quite incredible there was so much variety, there was also no complaint in this area with the staff they were right on the ball helpfulThis hotel while being high rise had some low moments for us as we felt some areas were really lacking but the hotels location is superb and staff like Peter did try and make your stay worth while .\\n111 The location is South West London and a healthy but doable walk from landmarks like the Museum of Natural History, Albert's Hall, Kensington Gardens, and Harrods .\\n112 LOCATIONA block from Gloucester Road Tube which is conveniently on the Piccadilly, District Circle lines .\\n113 Other reviewers are right, the entrance is in a bizarre location but once you figure it out, it's fine .\\n114 Nice clean rooms, good value, and average location near a tube station, but the rooms directing towards the main street outside are all VERY noisy .\\n115 Terrific location wonderful staff excellent pub !\\n116 This was our first trip to London and we found the location to be excellent .\\n117 Lovely hotel, terrific location, wonderful helpful staff, immaculately clean rooms .\\n118 Great location, 1 min from Gloucester Tube .\\n119 Excellent location good value .\\n120 Excellent location in the nice and relatively quiet area 100m from Tube station and shops restaurants .\\n121 The hotel's location is the best thing about it , near the tube stop, museums and Kensington High Street .\\n122 For our purposes, the hotel was perfectly adequate , the location was good and the room was clean and quiet .\\n123 Good location but need upgrade .\\n124 I really love the location of this hotel .\\n125 But again, the location could justify charging that price .\\n126 The hotel is very nice and the location is excellent .\\n127 If you're looking for a no, frills hotel that is all about location and price, this is your place .\\n128 All, in, all this hotel was a great choice for the price and location .\\n129 The Holiday Inn Kensington Forum has a fantastic location for a city break in London .\\n130 The best thing was the location .\\n131 Good location ,near the tube .\\n132 Good price location but no thrills .\\n133 The location is great , very close to Gloucester Road Tube, with Waitrose supermarket, coffee shops and restaurants nearby .\\n134 Great value and awesome location .\\n135 Instead you get attractively appointed, decent, sized rooms , AC that works, a modern bathroom, plumbing that doesn't gurgle and bang in the night, iron and board, bathrobe and slippers, lots of TV channels and a location that can hardly be bettered .\\n136 The location is terrific for museum, going and the Royal Albedrt Hall is an easy walk away if you enjoy concerts .\\n137 Great Location Nice Rooms Friendly Staff .\\n138 Great location service questionable .\\n139 Like other reviews, the location of the hotel is great, seconds around the corner from the tube .\\n140 Location wise, the tube station is just around the bend and key restaurants Bugis St .\\n141 Great location, close to the Underground and several excellent Pubs .\\n142 Everything was clean, the staff were very friendly and helpful and the location was excellent, all at a relatively cheap cost .\\n143 Location can't be beat, right on bus lines, next to tube station .\\n144 A nice hotel a resonable rate and a great location .\\n145 Location of hotel is great, next to Gloucester Road tube, close to museums, short hike to Buckingham Palace etc .\\n146 Location is the only thing it has going for it .\\n147 Great location, okay value and what you would expect .\\n148 On the positive side the location of Holiday Inn Forum was very handy for a conference I was attending .\\n149 The location is superb with the tube and bus stops literally steps away .\\n150 Nice location by Glouchester tube stop .\\n151 The best part about the hotel is the great location in Kensington .\\n152 Great Location and great business hotel .\\n153 Holiday Inn Kensington Forum is a perfect no fuss business hotel with fantastic location .\\n154 Great location pub in the ground floor .\\n155 Having never been to London, I found it easy to get around to places of interest from this location .\\n156 great location great breakfast !\\n157 Great location , we did what others have descibed and turned along Cromwell road and went to the other Holiday Inn in error when we first arrived .\\n158 This was my second stay at this location in the past one year .\\n159 The hotel is in an excellent location only a short walk to Gloucester Rd .\\n160 The location of the hotel is excellent, in a very nice area right next to the Gloucester Road tube station and direct on the picadilly line from Kings cross .\\n161 We thought this was a great value for such a great location .\\n162 Great location for vacationer .\\n163 The hotel was good and in a great location .\\n164 You cannot beat the location !\\n165 Coming from Cardiff, the location was perfect, as it was straight off the M4 and a short drive on the A4 before reaching the hotel .\\n166 it's just a great location, period .\\n167 This hotel provided that and a great location to boot !\\n168 the hotel is in a good location .\\n169 Convenient Location for Tourists .\\n170 Great location close to Gloucester Road tube stop .\\n171 Would definitely recommend this hotel if only for the fair price I got on priceline combined with the great, convenient location, which made it easy to get to all the touristy sites in London .\\n172 Convenient to Gloucester Road tube station, , location could not have been better .\\n173 Great location with cafes, restaurants and grocery stores all around .\\n174 All in all a clean room, great location near hyde park and all the stuff in kensington chelea, near tube station , quiet area .\\n175 Great location clean and quiet .\\n176 Location is excellent to the tube stations .\\n177 The good thing about this hotel is its location, you are a 10 minute walk from Harrods and \\u00a313 taxi ride to Covent Garden which will take you past all the tourist attractions :\\n178 Loved the location as it's only a 1, minute walk from the Gloucester Road tube station .\\n179 I like this hotel due to its location, but the management need to get a grip .\\n180 Its in an easy location from the tube, just two minutes walk .\\n181 The hotel has an unbeatable location in a very nice part of South Kensington , only 1 block from the Gloucester Road station .\\n182 The location of the hotel is fine and actually the hotel is not extremely bad but it is extremely EXPENSIVE .\\n183 We've stayed in London a lot and booked this hotel for one night due to a number of factors , the location, the price the availibility of a room to accomodate three adults .\\n184 The hotel itself is truly in a great location , on the same road as the major London museums it took a leisurely 5, 10 minutes to stroll to the wonderful Natural History Museum a further 5, 10 minutes up the road to Harrods .\\n185 If we hadn't experienced a problem with the a c I would have rated my overall stay here 5 5 for value, location, comfort, etc .\\n186 Location itself is great, but everything else is terrible .\\n187 don t stay here unless if the Kensington location is important to you .\\n188 Geat location, clean, relatively quiet inside the rooms, somewhat confortable .\\n189 The main reasons are location and the quality of the air conditioning .\\n190 Yes, the standard rooms are small for two people and, yes, they seem to have a lot of trainee staff at the front desk, who struggle sometimes with the language, and yes some of the rooms are affected by traffic noise, but for a good location and a no, frills room provider, it is hard to beat .\\n191 Clean rooms, bustling lobby, GREAT location .\\n192 I will NOT recommend this location .\\n193 I travelled during the off, season in January to London, this was my first stay at this location and I would definitely consider doing so again .\\n194 Less than a five minute walk from the tube station and within walking distance to the Museum of Natural History, really a good location .\\n195 , , The one thing this hotel has it going for it is the location .\\n196 With a kid and a stroller, this definitely is a very convenient location .\\n197 Cromwell is a pretty posh and popular location .\\n198 A fine hotel and great location .\\n199 We could not have been happier with the location or the room for the price .\\n200 Great location indifferent service .\\n201 This being our first ever visit to UK, must say the location of the hotel, just 2min walk from Glousceter Rd tube stn was a great advantage as even during the weekend, Piccadely line remained open, though distict and central lines had some restrictions on a c of maintainence etc .\\n202 Good value and excellent location .\\n203 Booking through Priceline led me to the Holiday Inn Kensington Forum which was inexpensive, in a great location, and clean and comfortable .\\n204 The location of the hotel is great because it's about a block from the Gloucester Road Tube Station which is on several Tube lines .\\n205 In short, the location of the hotel made travel around London and getting to train stations to go out of London incredibly easy .\\n206 Overall, we felt this hotel was in a convenient location and a good deal for a London hotel .\\n207 As other reviewers mentioned, good location and lots around to do eat see enjoy .\\n208 Nice hotel with great location .\\n209 The location is excellent, just a half a block from the Glouster Rd .\\n210 Also, the tour bus most likely will not drop you off at your hotel after the tour, but rather at Victoria Station or some location nearest your hotel as the bus driver can get .\\n211 Also, the close location of the gloucester road tube stop is great for getting around all of london .\\n212 Great location , a couple of minutes walk from Gloucester Rd underground station, and shops, restaurants, internet cafe etc\\n213 Great location but don't bring the car !\\n214 The location is great however, only 5 mins walk from the Gloucester Road tube and 10 mins walk to the South Kensington museums, Albert Hall, etc .\\n215 The hotel is in an ok location , close the the Gloucester Rd tube station .\\n216 The location of the hotel was great .\\n217 Otherwise, really great location with the refrige being key .\\n218 This is our 2nd time at the Kensington Forum and love the location .\\n219 Location was great come out of tube station, take first turn right and walk 150 yards you're there !\\n220 Location was great , close to tube stop .\\n221 The location of the hotel was excellent, a 5 min stroll from Gloucester Road tube, next to tesco express and a large supermarket just around the corner .\\n222 The location is perfect, very central and very near the subway .\\n223 However the location was great with the underground and good restaurants nearby .\\n224 One of the nicest features about this hotel is the location .\\n225 So many employees, a wonderful location, an impressive building .\\n226 Well, after all, as I said, great location, great view, NOTHING ELSE !\\n227 On a positive note the location is great and the overworked staff did their best however if visiting London their are definitely better options such as the NH which is just around the corner .\\n228 Perfect location, right around the corner from the tube .\\n229 Our parents who are 55, 70 were able to wonder around the entire city by themselves due to the ideal location of this hotel .\\n230 Nothing fancy but we were quite happy with the location of the hotel, just like most who have stayed at the hotel before .\\n231 Overall, we found the hotel only good for location and decent room if somewhat cold just like the weather was in London then .\\n232 The breakfasts were excellent and the location is great for viewing London by bus, on foot and by tube , which is just at the end of the road .\\n233 Great Location, Very Clean Miami FL .\\n234 The location in the Kensington area could not have been better, the area is safe, nice and fairly quiet .\\n235 A Great Location, Friendly And Polite Staff, First Class Breakfast And Rooms As Described Above Will Have Me Returning Again And Again .\\n236 Very convenient location for Gloucester Road tube .\\n237 The location was excellent with a number of good eating options locally and Garfunkels and Ask Pizza located in a complex within a very short walking distance for kids who want something easy .\\n238 brilliant, behind tube station, near local stores, restaurant, posh area, near kensington park, great central location yet quiet enough in a cul, de, sac location .\\n239 flaw location of main entrance, big signs and big flags on main street but enter from the back, tiny miserable unwelcoming cheap entrance design, confusing to first time visitors .\\n240 the only reason to choose this hotel is its location, for other aspects, not up to standard for its price .\\n241 The Forum Holiday is a big high rise and right across the street, is another Holiday Inn, albeit it much smaller which tends to confuse people looking for that 2nd location hotel .\\n242 Great Location and Hotel for the Money .\\n243 The location in South Kensington is excellent as the Gloucester Road tube station is just around the corner and is served by 3 main lines, , District, Circle and Piccadilly .\\n244 Can't say enough about the price, quality, location and convenience of this hotel and area .\\n245 Good points excellent location really very close to the tube and the tube is on good lines so not lots of changing .\\n246 The location is in a good location near the tube and only a few minutes by cab to central London .\\n247 Although in some ways I would have preferred a smaller, more authentic English hotel, we really couldn't beat the combination of price and location .\\n248 Location is good if you plan on taking the tube .\\n249 Would recommend the Holiday Inn Kensington Forum for location, price , and cleanliness .\\n250 Decent rooms and good location .\\n251 Stayed at this hotel, for one night, as the location was ideal for our night out at the Royal Albert Hall .\\n252 As also said before, location is excellent, very near the tube stations, plenty of delis and eating places nearby and a supermarkets for any snacks we wanted for the room .\\n253 Location is great, hotel is wonderful, and price is right, it really is hard to beat right now .\\n254 good location great deal on priceline .\\n255 This hotel is in a very convenient location, just a block and a half from the Gloucester Road tube station .\\n256 Comfortable room with large bed but limited space as is often the case with London hotels, but I found the location excellent .\\n257 Stayed between Xmas and New Years and the room, location, etc were what to expect for the price I paid .\\n258 The location was great too as it was next to the tube .\\n259 Excellent location but rooms far too hot .\\n260 hotel but would stay again if the price was right due to the excellent location .\\n261 Good value in a good location .\\n262 The location was ideal for getting around London .\\n263 Which leads us to , location, this hotel's best feature .\\n264 Stay here , you won't regret it, great price , great location .\\n265 The Hotel location was absolutely perfect for sightseeing and shopping .\\n266 Overall, for the money, location, and for the piece of mind knowing that its going to be clean and comfortable, look no further .\\n267 Perfectly adequate excellent location .\\n268 THe location was great, just aroung the corner from the tube .\\n269 But we also didn't give them any hard times, so they didn't have to fake anything , The location of the hotel is just perfect .\\n270 As everyone mentions, the location was perfect for sightseeing .\\n271 , very clean, quiet, bathrooms appear to have been updated recentlyThe hotel location is great .\\n272 The location is fab , near the Gloucester underground station and the Waitrose grocery store .\\n273 Excellent location shame about the service !\\n274 Fantastic location and local amenities i .\\n275 The location is great and the Tube station is very close .\\n276 good hotel for the price and location .\\n277 Apart from that, the staff were friendly and the location is great .\\n278 The location is incredibly convenient, with lots of restaurants and easily walkable to the tube .\\n279 The single thing to recommend this hotel is the location, which is excellent .\\n280 The location is EXCELLENT, just round the corner from the subway .\\n281 Friendly helpful staff, clean and comfortable rooms and not to mention its great location .\\n282 This hotel is in a very good location , tube, buses, restaurants, shopping and museums all within very easy walking distance .\\n283 All in all, if you do not mind giving up the Euopean atmosphere, the Holiday Inn gives you a comfortable stay with the most convenient location .\\n284 Location was great being only a few yards from the Gloucester Road tube on Piccadilly, Circle and District lines and was therefore an ideal base for our sight seeing visit .\\n285 Great location and can't beat the price and the comfort !\\n286 Since this location is the designated layover site for American Airlines, there were tons of pilots and flight attendants everywhere, but that added to the familiar feeling of having Americans around .\\n287 Pleasant staff, clean hotel, comfortable beds, with a great location .\\n288 Good Price Great Location Would definately stay there again !\\n289 Anyway it may not have the charm or history of other hotels in London, but for the price location we would visit again .\\n290 Excellent location clean but small .\\n291 The best feature of this hotel is it's location .\\n292 The location is perfect with many everything you need just outside the door including a great French patisserie and coffee shop .\\n293 Best part of all is the location, loved the Gloucester Road tube station nearby and the South Kensington area in general, very safe to walk around in any time day or night .\\n294 Gloucester Road tube station is at the westernmost side of zone 1, making it a perfect location between the airport and central London .\\n295 The location of the hotel is superb , 2 minutes walk from Gloucester Road tube .\\n296 Location is hard to beat though .\\n297 The hotel was clean, the beds were comfortable and the location was great .\\n298 Maybe I'm being a little harsh so if you can get this hotel at a good rate it is probably just about worth it, as it has an excellent location .\\n299 Awesome location comfortable rooms .\\n300 Great service and perfect location !\\n301 I would definately recommed this hotel to anyone as it is unbeatable for price and location in London .\\n302 I wanted a good location, above all else, and this hotel fills that need .\\n303 For a similarly good location , you can stay at the London Hilton Metropole for the same price and receive much better service .\\n304 It's a great location and the rooms are nice and clean and yes, a bit small but definately NOT tiny .\\n305 It's a great location VERY near the Gloucester Rd tube stop .\\n306 Perfect if you are going to see the sights in London, , great location to get around from, , right downtown .\\n307 A decent hotel with a great location .\\n308 The raves about the location are well deserved .\\n309 it's a solid property, with an amazing location !\\n310 Again the location just can't be beat !\\n311 Great Location , Just fine for our stay .\\n312 Very convenient location one block from Gloucester Road tube station .\\n313 It is in a very good location for catching the tube or the Hop On Hop Off bus tour .\\n314 The hotel caters to airline personnel, cruise tourists, and is a good choice for someone that wants to have a safe location .\\n315 Good location if you want to be near the Piccadilly line to Heathrow , but otherwise very average .\\n316 Solid Deal in a Great Location .\\n317 Excellent Hotel Excellent Location !\\n318 Location wise it is a 5 min walk to the tube and you are on the circle, district and picadilly line .\\n319 The location is great though to get to the Tube and sites around West london and i got a good rate for the room .\\n320 The top feature of The Holiday Inn Kensington Forum is its location, in a superb area of London that's clean, safe and interesting .\\n321 Not impressed at all and will not stay again despite good location .\\n322 But it's great value for money, great location, pleasant staff, good food, and we'll be staying there again .\\n323 We thought this modern, efficient hotel was excellent value for such a great location in the heart of London .\\n324 Great location great breakfast bathrooms tiny .\\n325 The location of the hotel is, as stated earlier, absolutely fine and well within walking distance of the V A, Natural History Museum, Science Museum and Hyde Park .\\n326 The location can't be beat , , a two, minute walk from the Gloucester Road tube stop .\\n327 Great location, close to a tube station with a 24 hour Tesco metro nearby .\\n328 Mother was very pleased with the location and convenience .\\n329 GREAT location and bargain internet price !\\n330 The rooms are a standard European size but they are kept spotlessly clean and the hotel couldn't be in a better location .\\n331 The location of the hotel was brilliant , really nice area .\\n332 Still, if you're just looking for a cheap place to lay your head, the Holiday Inn Kensington Forum is a great location .\\n333 The location is fantastic, , you're literally around the corner from the Tube station there's a Sainsbury's supermarket right above the aforesaid Tube station .\\n334 Another plus is its location , convenient to the tube, museums, shops, etc .\\n335 This was our second stay stay at this hotel based on it's location .\\n336 b basis Hotel huge , 900 rooms Buffet breakfast good for a buffet This is a well run hotel with a great location for the metro Rooms a bit on the small side but I would stay again\\n337 The location is also good because it is literally 150 footsteps from Gloucester Road Underground Station .\\n338 I have stayed in a few hotels in London while touring but it would be difficult to find a better location in London for the tourist class who is looking for value, efficiency and cleanliness .\\n339 The location and American standards are nice touches .\\n340 The location was perfect, just a minute from the Gloucester Rd .\\n341 We were easily able to navigate the city from this location .\\n342 The hotel is clean, modern, and in an excellent location .\\n343 But we would definitely stay again because of the hotel's location .\\n344 Aside from that, the location is great and the furnishings were modern and very comfortable .\\n345 Excellent location and service .\\n346 The location is excellent, just a short walk from the Gloucester Road tube station and in a lovely neighborhood .\\n347 Overall an above average hotel based on location and price but not one for a romantic get, away !\\n348 Location is fantastic , both on bus line and underground, with many useful stores on Gloucester Rd .\\n349 This is a good basic hotel which has a terrific location .\\n350 , checked us in at 11 am after a transatlantic flight, room larger than average, compared to our continental Europe travel, location, location, location .\\n351 The location is right next to the Picadilly line tube stop, so it is very convenient to get around town and also to the airport .\\n352 Great location, grocery store open 24 hours within 5 mins walk and friendly international staff, will stay here again .\\n353 Great location , but executive room not worth it !\\n354 We enjoyed our trip to London , and the location for the Holiday Inn Kensington Forum was terrific .\\n355 I do recommend the hotel , it was clean, excellent location, there was ice on the top floor along with one microwave, etc .\\n356 Right off of the Piccadilly and Circle tube lines, the location is excellent .\\n357 It is a relatively new hotel, clean and has a great location which is close to the underground with 3 connecting lines, it gives you an advantage to go anywhere without changing lots of trains .\\n358 Fantastic location right next to Gloucester Rd tube station .\\n359 Excellent location service cleanliness and price at the Holiday Inn Kensington Forum .\\n360 All in all great location , nice restaurants nearby, nicely pitched service .\\n361 Speaking of the tube, the location really is great 1 block away !\\n362 The location of the hotel is excellent .\\n363 Like others, I liked the location with restaurants, Glouster tube station, small grocery stores, , , and internet cafes within easy walking distance .\\n364 The location of the hotel is excellent , one block from the tube Gloucester Rd and the surrounding neighborhood is fantastic , take a walk from High Street Kensington to the hotel , I'd love to live there !\\n365 Great Hotel Great Location Great Value !\\n366 The biggest advantage of this hotel is it's excellent location just off of Gloucester Road in Kensington, with the Undergroud one block away, along with several nice restaurants and pubs in the area .\\n367 Although the location is a bit removed from the West End, it is only a block away from the Gloucester Road underground, with three train lines that will take you almost anywhere in the city in 15 minutes or less .\\n368 great location good but large tourist hotel .\\n369 The location is great and very convenient .\\n370 The location is great but there are many hotels in the same area so I might try out others but would certainly consider coming back .\\n371 Can't beat the location, rooms, value and view !\\n372 Good Value Nice Hotel Fantastic Location .\\n373 Holiday Inn KF has a location that cannot be beat .\\n374 this is definitely the location you want .\\n375 Great location loved the hotel .\\n376 The tube station is right there and the location is great for getting around London .\\n377 You could not beat the location or the price .\\n378 The price is moderate for the service and the location .\\n379 I will say this hotel is in a wonderful location, right across from the gloucester tube station and only a stop or two away from Notting hill, Harrods, and Kensington High street .\\n380 Location is so convienent to the tube and grocery .\\n381 Other than room size, we were very happy with the hotel, especially its location .\\n382 Overall good hotel and very good location close to the tube .\\n383 The hotel has a great location with easy access to most of London's tourist sites .\\n384 The room is a tad small but is super clean and great location .\\n385 The price, the space, the location and the service were the exactly right thing we wanted .\\n386 Yes I do stay here a lot and as such, guess that I get extra special treatment but it is in a great location with the tube within a 2 min walk surrounded by places to eat and drink and far enough out of central London to be quiet but you can still be in the west end in 15 minutes .\\n387 GREAT LOCATION COMFORTABLE HOTEL .\\n388 Outstanding location, even an internet cafe nearby .\\n389 the hotel is in a GREAT location .\\n390 Great location, freshly renovated, very small rooms, anonymous hotel, acceptable service .\\n391 The location couldn't be better in my opinion .\\n392 Price and location can't be beat .\\n393 As said by others, an absolutely excellent location, on tube lines that will get you to just about anywhere .\\n394 The location could not have been better with being so close to the Underground station and near good restaurants, grocery stores, post office, pharmacy, Internet cafe .\\n395 The hotel is set in an absolutely ideal location, offers great rates, and excellent conceirge .\\n396 Great location, one block from the Gloucester Tube station with a number of acceptable restaurants in the area within walking distance .\\n397 Best location and unbeatable price !\\n398 This is an awesome location right near the Gloucester Road tube stop .\\n399 Definitely stay here if you are on a budget , and even if not, it's still nice and the location is really the best !\\n400 A true bargain in the London hotel market, and a very convenient location adjacent to the Gloucester road underground station .\\n401 Excellent location but a couple of problems .\\n402 The location is excellent being a few minutes walk from Gloucester Road tube station with its good connection to Heathrow airport and to central London .\\n403 Great choice in a great location .\\n404 The location could not be better , one block from the intersection of Cromwell and Gloucester Roads, with the Glouster Road tube stop .\\n405 I say fortunate because the location was perfect for my needs as a first, timer .\\n406 This is definitely a modern hotel, no English charm here, but the location and the price can't be beat .\\n407 The location could not be better and best of all it was so clean .\\n408 Everything worked well, was in good condition and the room was quiet in spite of the hotel's busy location .\\n409 Service was great and the location of the hotel was very convenient .\\n410 Great room fabulous price wonderful location !\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 1\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 13 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Cluster #1은 호텔에 대한 리뷰로 군집화됨" + ], + "metadata": { + "id": "2b9dO8kSgGl1" + } + }, + { + "cell_type": "code", + "source": [ + "document_df[document_df['cluster_label']==2].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 247 + }, + "id": "RLHYNzTFgNIQ", + "outputId": "8eb4a309-0bdc-4ac5-dca4-f6e7577f3450" + }, + "execution_count": 14, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "33 gas_mileage_toyota_camry_2007 \n", + "36 mileage_honda_accord_2008 \n", + "15 transmission_toyota_camry_2007 \n", + "\n", + " opinion_text \\\n", + "33 Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 ... \n", + "36 It's quiet, get good gas mileage and looks clean inside and out .\\n0 The mileage is great, and I've had to get used to stopping less for gas .\\n1 Thought gas ... \n", + "15 After slowing down, transmission has to be kicked to speed up .\\n0 ... \n", + "\n", + " cluster_label \n", + "33 2 \n", + "36 2 \n", + "15 2 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
33gas_mileage_toyota_camry_2007Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 ...2
36mileage_honda_accord_2008It's quiet, get good gas mileage and looks clean inside and out .\\n0 The mileage is great, and I've had to get used to stopping less for gas .\\n1 Thought gas ...2
15transmission_toyota_camry_2007After slowing down, transmission has to be kicked to speed up .\\n0 ...2
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"document_df[document_df['cluster_label']==2]\",\n \"rows\": 3,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \"gas_mileage_toyota_camry_2007\",\n \"mileage_honda_accord_2008\",\n \"transmission_toyota_camry_2007\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 3,\n \"samples\": [\n \" Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 It gets great gas mileage .\\n1 Being a mother who drives a lot I wanted a safe vehicle with good gas mileage and this car delivered that and more .\\n2 Great gas mileage and comfortable on long trips .\\n3 Nice looking car and good gas mileage .\\n4 Good gas mileage, comfortable seating, lots of leg room .\\n5 The interior is roomy, the ride is smooth and solid and yet it has excellent gas mileage .\\n6 The gas mileage is still good, cant give specifics but for a V6, its good .\\n7 I had my OEM Turanzas wear out at 14K and was lucky to get local Bridgestones to gimme a mileage warranty adjustment, got new tires for $290 .\\n8 My mileage averages 25, but it easily gets 30 or over on the highway .\\n9 I get better mileage with my BMW 325i .\\n10 The main reason for this review is to add the broken in gas mileage .\\n11 The vehicle does not get as good of mileage in town as I thought .\\n12 The gas mileage is not what its cracked up to be .\\n13 The corolla is the best toyota car when it comes to gas per mileage .\\n14 It has excellent power and good mileage considering the amount of power it has .\\n15 It had hesitancy during acceleration, bursts of excessive RPMs in cruise control, and only average mileage .\\n16 The car has extremely dangerous hesitations and absolutely terrible gas mileage .\\n17 With the SW fix and using the 0W, 20 oil our gas mileage has improved from 26 to 32 mpg .\\n18 Gas mileage is great on this model especially the 6 .\\n19 Toyota may have computerized the engine and transmission to get better gas mileage but the very best I can get is 25 mpg on the highway .\\n20 Gas mileage is about 20 in the city, certainly not that great .\\n21 Overall I like the Camry for its large trunk space, sporty look, the metallic red paint, reliability and low maintenance, Toyota warranty, Toyota dealer service department and better gas mileage than my full size truck .\\n22 This car offers poor driver's seat comfort, poor vision , only average ride quality, gas mileage \\n23 To top things off, the car gets terrible mileage .\\n24 Mileage has met the EPA sticker and I just started .\\n25 Gas mileage is only about 22 around town .\\n26 It gets great mileage, and runs great .\\n27 Mileage out of the showroom was way below advertised , but seems to have come around over time .\\n28 Gas mileage stinks too but it may be better if they could figure out the engine problems .\\n29 hesitating then surge between shifts, windshield wipers that move with power that rocks the car to the point that it feels like it will roll over, plastic parts falling off, cruise control is so unreliable I don't use it, bad mileage, and, last but not least, half the windshild blacks out when driving at night through areas without street lights .\\n30 It gets great mileage for a V6, good sound system that comes standard in all Camrys and overall styling looks sporty and aggressive .\\n31 Gas mileage at 7500 mi is still around 20 MPG and I'm hoping it will improve as I rack up the mileage .\\n32 This new one gets even better mileage, averages about 33 freeway .\\n33 I've had this car for a year , bought it for the low emissions, safety, and good mileage rating , and I'm considering trading it in .\\n34 throttle hesitation, and poor gas mileage .\\n35 My previous BMW 3 series got better mileage, and believe me it was more fun to drive .\\n36 We have become Toyota Camry and Honda Accord lovers driving used high mileage models from 1992, 1994 .\\n37 The Mileage Queen has put 55,000 miles on Ricky since Sept 06 .\\n38 truly fantastic gas mileage .\\n39 Gas mileage now is in the high 20s and that should improve with time .\\n40 The delay in acceleration and poor mileage makes this car worse than any other car in the segment .\\n41 Mileage a little disappointing .\\n42 The gas mileage has been getting better .\\n43 I first averaged 23 mpg during the break in period, but ever since then the mileage have increased slowly .\\n44 Highway mileage is 29, which I consider poor for a 4, cylinder .\\n45 Gas mileage is poor, 25 mpg .\\n46 Highway mileage already greater than promised .\\n47 Appears to have good mileage .\\n48 Wish it delivered the gas mileage of my 2003 XLE .\\n49 This car has it all, styling, performance, durability, wonderful gas mileage and just a great and exciting car to drive .\\n50 The V6 was too much power, but with the gas mileage difference of less than 2 MPG .\\n51 Gas mileage is disappointing, 21 in town .\\n52 The mileage seems to be good too as the fuel indicator still shows approx .\\n53 Can't beat the room, gas mileage and performance for dollar .\\n54 Good acceleration for engine size, and good mileage, especially when highway cruising around 70 mph .\\n55 I drove the car 600 miles in the last week and gas mileage averaged 26 mpg .\\n56 Gas mileage on recent long trip was a disappointing 28, 29 mpg .\\n57 This car has plenty of pick up and go even with the in line four cylinder engine along with good gas mileage and handling .\\n58 Serious disappointment in gas mileage , particularly over my previous 1999 model .\\n59 Gas mileage on the first tank was 30 .\\n60 I am a little disappointed with the mileage but I do have a tendency to drive more aggressive in the model .\\n61 2000 miles were on a trip north on I, 95 the rest of the mileage was in Daytona Beach, FL and surrounding area .\\n62 on my 2000 mile trip gas mileage in Florida, Georgia, and South Carolina was 32 .\\n63 7, as I edged into the mountains of NC and Virginia, the mileage fell to 30 .\\n64 In town driving the mileage has been 20 .\\n65 Would like to see better gas mileage too .\\n66 I am disappointed with the gas mileage .\\n67 It floats on the road, handles like it's heavy and substantial, but I get great gas mileage , around 30 mpg .\\n68 Great ride, engine, interior, gas mileage .\\n69 Nice gas mileage for a family car .\\n70 Great performance, great gas mileage , superior quality , I always thought of a Camry as just a practical family sedan .\\n71 I got 35 highway mileage with ac on and combined 28 29 mile per gallon with ac on .\\n72 I purchased this camry, three weeks ago, acceleration is a major problem, just not like the older models of camry, was in a accident, hit on the front right side, right fender, car was considered total loss, not fixable, I would not purchase another camry disappointed is this 2007 camry, gas mileage is not as good as prior years, i had to purchase another vehicle, it was not a camry, made in ky, it was a solid 2007 toyota RAV4 made in japan .\\n73 I would highly reccomend this car If your looking for a sporty, roomy, 4 door sedan with good gas mileage\\n74 Safety was #1 and mileage was #2 .\\n75 Traded my Highlander for it for better mileage w gas prices so high .\\n76 I decided on the Camry because of the value and gas mileage .\\n77 Biggest disapointment is gas mileage .\\n78 I actually get better highway mileage than sticker show .\\n79 I have to say the car rode great,comfortable and gas mileage great .\\n80 My mileage is 1 2 road and 1 2 city and I am averaging between 26, 28 mpgs .\\n81 I believe after it has some miles on it, the mileage will improve .\\n82 Gas mileage is lower than my '02 .\\n83 The mileage has been both street and interstate, averaging 24 miles per gallon .\\n84 For a 4 cylinder engine what get, up and go,not to mention the great gas mileage .\\n85 It is a very well designed auto and runs and handles very well, mileage not quite as good as 2004, but only have 2100 miles on it .\\n86 Gas mileage for us will be what it is rated, maybe a little better on highway on the flat open roads of West Texas if you don't put your foot in it all the time .\\n87 Comfortable and quiet with excellent gas mileage .\\n88 Love the looks, power, roomy interior, good mileage at 32 hwy and 25 city .\\n89 Once you learn the responsiveness of the gas pedal, you can get either the performance or mileage you want out of a 2 .\\n90 Gas mileage is 28 mpg on combined and 32 when we were on trip of 100 miles .\\n91 Comfort is great, mileage is good overall, better on the road than expected , compared to my 1999 Camry .\\n92 Downshifting on grades is annoying, but overall car is good with decent mileage, and good value for the money .\\n93 The 2000 Bonneville I traded was not as refined or quiet, but rode better and got nearly the same mileage .\\n94 Reliable and predicted to get great mileage .\\n95 My conclusion after doing a ton of research regarding safety, reliability, comfort and gas mileage :\\n96 My overall mileage has been 23, 24 .\\n97 Probably the best 4 cylinder motor on the market with excelent mileage and performance .\\n98 Powerfull, quiet, good gas mileage, excellent workmanship, good audio system .\\n99 Poor mileage is yet another factor as is the numerous blind spots resulting from the appearance over proper design issues .\\n100 The engine, ride and gas mileage is great .\\n101 It gets great gas mileage for a larger car .\\n102 Once broken in mileage is steady at 29, 32 mpg .\\n103 The transmission is jerky and the gas mileage is terrible .\\n104 I would not have purchased this vehicle if I was aware of the actual poor mileage .\\n105 I like how it looked when I got the car, but with high gas prices, I am very disappointed with the gas mileage .\\n106 I thought great mileage & I loved the look of the new Camry .\\n107 If I'm going to get mileage this bad I may as well look good doing it .\\n108 My old 1989 Camry is still running well giving great mileage 40\\n109 Mileage is mediocre at an average of 25 .\\n110 The 4 cylinder does not get good mileage at 70 MPH plus .\\n111 Below it you can expect to get good mileage only if you do not have too many hills .\\n112 This car is easy to drive, great gas mileage and comfortable .\\n113 Doesn't anyone build a quiet car out there for around 30K that used regular gas and gets good gas mileage ?\",\n \" It's quiet, get good gas mileage and looks clean inside and out .\\n0 The mileage is great, and I've had to get used to stopping less for gas .\\n1 Thought gas mileage would be better .\\n2 There are trade offs that I have no problems with, my mileage after two tanks with mostly city driving is 21 but acceleration is very good, smooth, ride a little firm but enjoy the handling .\\n3 I chose it for the low emissions, value for the money, reliability and gas mileage .\\n4 The EPA mileage ratings and what the dealer bragged about mileage wise are a joke .\\n5 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n6 road noise is horrible, stereo sucks, terrible gas mileage etc .\\n7 Otherwise the gas mileage, service intervals, drive and dependability is still pristine .\\n8 I traded an 05 Acura TL for the gas mileage savings .\\n9 Runs better than AUDI A6 , Better Mileage \\n10 Gas mileage at first wasn't great but having reached 2500 miles, it seemed to go up dramatically in city driving .\\n11 Leased in Feb 2008 as a replacement to a Pilot, which had poor gas mileage .\\n12 I do miss the carry and load capacity of the Pilot, but the Accord gets decent gas mileage by comparison .\\n13 My old Buicks had far smoother shifts at far higher mileage .\\n14 It has excellent gas mileage drove from PHX to San on a half a gas of tank .\\n15 gas mileage sucks, i was getting 20 mpg on 05 accord v6 and seem to pull only 18 mpg on this one .\\n16 Gas mileage is only 20 around town and 26 to 27 on the highway with a four !\\n17 The car has met expectations, aside from the gas mileage and wind noise .\\n18 Almost half the mileage as compared to advertisement .\\n19 At first the Gas mileage was very poor but has really improved .\\n20 I wanted an inexpensive car with good mileage, and strong resale .\\n21 Very good mileage, getting about 28 mpg combined highway, and I have a heavy foot .\\n22 The 190 hp I4 engine is powerful and smooth enough to enjoy, without sacrificing fuel mileage .\\n23 great mileage, poor build quality of the car .\\n24 On top of all this, I get horrible gas mileage in city driving I get 15, 16 mpg .\\n25 It gets great gas mileage and love the car .\\n26 Mileage over three tanks has been 25 .\\n27 3 mpg as consistent full tank highway mileage .\\n28 The car drives great and gets better gas mileage than my 2000 Lincoln LS V8 .\\n29 It looks great, handles well, and gets good gas mileage .\\n30 The gas mileage has improved from 18MPG to 21 but that still is not good .\\n31 Gas mileage has been a bit disappointing, but it has been improving .\\n32 the variable cylinder management changes to 4 cyl when not under load, this helps with fuel mileage .\\n33 After owning a Honda Accord EX I had to go back to the Honda the gas mileage can't be beat .\\n34 Gas mileage is around 22, 23 in town and 29, 30 on the highway .\\n35 Fuel mileage has been less than expected .\\n36 It's no 8 cylinder GT, but it also gets double the gas mileage and so far, no problems .\\n37 Aside from missing the turbo's acceleration, I've preferred the Accord's better mileage, handling and comfort .\\n38 The manual transmission lets me control the car better and achieve higher mileage .\\n39 So beware, if you are trading in your V8 for a mileage vehicle, this is not it in my case .\\n40 The car is getting great gas mileage even though I have only been driving it 2 weeks .\\n41 Our 2008 Accord is very disappointing, our in town mileage is 14 .\\n42 Gets great gas mileage, I mostly drive city and I am currently receiving 25 .\\n43 I just love the VCM makes the car give great mileage .\\n44 Initial gas mileage looks good too .\\n45 Don't buy this car if you want good gas mileage .\\n46 I have a V, 6 with Variable Cylinder Management which is supposed to let the car run on 3,4 or 6 cylinders, as needed, to improve mileage .\\n47 My BMW 530i got better mileage .\\n48 It is fun to drive, I love the color, it has great features, the sound system is nice, the power is perfect and the gas mileage is great !\\n49 Fun to drive, fairly roomy, looks good, gas mileage is OK , but not as good as Honda advertises .\\n50 Gas mileage is wonderful, 1st tank 26 mpg with almost all city driving .\\n51 I had tons of room in my 4Runner, but I needed something that would get better gas mileage w o giving up power .\\n52 I am so very disappointed with the gas mileage !\\n53 I traded for better mileage, and this is what I got .\\n54 I will warn you though, that if you drive it like it should be driven, gas mileage isn't the best .\\n55 It feels safe, performs well, looks fantastic and gets decent gas mileage for its size .\\n56 The Accord is better than other those car on gas mileage and reliability .\\n57 Strangely, the gas mileage is not as good as the Acura but is acceptable .\\n58 Some reviewers were complaining about gas mileage .\\n59 Gas mileage is horrible too, 20 mpg city highway after 6000 miles .\\n60 If you are looking for a car that is affordable and well built this is the car for you bad gas mileage\\n61 In reality we have been very disappointed our in city mileage is 16, 17 and highway is better at 27 .\\n62 While the mileage is not bad it good be better, but as the acceleration is good for a 4 cylinder it's a trade, off .\\n63 I am sure as gas prices go up cars will be built to get better mileage at the expense of acceleration .\\n64 Good looking inside and out, comfortable and roomy, commendable performance, and excellent gas mileage .\\n65 I live in Chicago and drive downtown and back 2 times a week for school and am getting great mileage .\\n66 Only update is after about 5k miles the fuel mileage is less than I had anticipated .\\n67 Everything else such gas mileage, handling, stereo system is fine but it doesn't make up for the loud rattles and wind noise .\\n68 It's almost embarrassing driving such a nice car around a parking lot and have it sound like a high mileage beater .\\n69 So I saved $2 K upfront and will also save down the road since the 4 cylinder gets slightly better gas mileage .\\n70 It is a well built car that runs smooth and gets great gas mileage .\\n71 Gas mileage is still getting better though .\\n72 The gas mileage on the highway is about the same for both models .\\n73 Local mileage with the '08 has been about 24 mpg, and about 25 mpg with the '06's that we've leased .\\n74 I decided to go back to Honda as even with high mileage they keep their value .\\n75 Mileage , also not impressive , all I can get is about 24mpg, far from the 32 mpg you see on the window sticker .\\n76 Posted mileage ratings are for those who have a heavy right foot .\\n77 Gas mileage is fantastic especially going from a V8 SUV to a 4 cylinder sedan .\\n78 I was tempted to go for the V6, but I drive 42 miles one way to work and we have an '07 Odyssey with the variable cylinder management system and unless you're on long highway runs it doesn't get the gas mileage Honda claims .\\n79 I just love this car , and with almost double the highway gas mileage that I was getting with my Grand Cherokee , that adds a lot of $$ towards my monthly payment .\\n80 190 hp and superior gas mileage .\\n81 It wasn't worth saving the little difference in gas mileage for this Honda .\\n82 The gas mileage is about 45 to the gallon going on the highway with cruise at about 800 or 900 RPM and about 38 going 70 .\\n83 The Gas mileage is good, the acceleration sometime is slow when cold from 1st to 2nd gear .\\n84 I hope to get better mileage on extended highway trips .\\n85 I think the mileage would be even better with a 6, speed stick shift to drop the tachometer from ~2300 rpm to <2000 rpm at 60 mph .\\n86 Gas mileage has been improving and is now consistently 29 hwy 22 city .\\n87 Very peppy engine great fuel mileage 28, 30 combined .\\n88 I am not known to drive slowly so I am pleased with the mileage .\\n89 We bought this car with the expectations of getting a car that feels good with my bad back, gets good gas mileage, and is reliable .\\n90 So far, the reliability has been as expected, it is comfortable on my back, and the gas mileage has been pretty good .\\n91 It is great to drive, has many nice features and gets you there with great mileage .\\n92 Mileage is very good and we have already taken it on a long trip .\\n93 I had rather not have it and sacrifice the mileage .\\n94 The gas mileage has been as advertised, hitting 32 mpg on the highway when driving at 65 MPH .\\n95 Gas mileage after 1000 miles is averaging apprx 23, 24 mpg in a blend of city highway .\\n96 It has everything but good gas mileage .\\n97 This car has great gas mileage even with the V6 .\\n98 The best gas mileage I can get is 22 mpg which is mostly highway and the car sometimes hesitates during acceleration\\n99 I drive around 60 miles a day so fuel mileage was important .\\n100 First tank mileage was 27 mpg not bad at all .\\n101 highway mileage slightly over 30 as advertised .\\n102 with gas prices, wanted better mileage .\\n103 It gets good mileage on HWY = 30 but mediocre on local = 21 .\\n104 SUV, wanted something with better gas mileage and something that had good resale value .\\n105 The 4, door provides the room we needed, the exterior design keeps the sedan from looking boring, the gas mileage is great, the price point was right, and the reliability is terrific .\\n106 Gas mileage is disappointed, avg 20 mpg so far .\\n107 i just purchased my lx, p a couple of weeks ago, having driven a pick up for the last 25 years, i was really surprised at how much i like this car, going from a big v, 8 to a 4 is a change but the power is good, gas mileage is great .\\n108 At first the gas mileage was a disappointment, but as the car is now breaking in it's getting better .\\n109 I test the car and was very impressed with the looks and the 4cyl was adequate since gas mileage was very important to me .\\n110 I expected a little better gas mileage avg, approx 26 mpg .\\n111 poor gas mileage look close at your window sticker not the big mpg numbers but the ratings below, it tells you that you could get 17 mpg based on your driving habits .\\n112 The ride is excellent, and the fuel mileage is impressive so far .\\n113 Wanted something with better handling and gas mileage .\\n114 Great gas mileage for a v, 6 .\\n115 Gas mileage is horrible on highway at 21 mpg .\\n116 My mileage, is averaging about 28 .\\n117 I was a bit disappointed with the 4 Cyl mileage as I drive over a 100 miles a day round trip to work .\\n118 There seems to be no way to shut it off and mileage is about 26 27 highway .\\n119 Mileage jumps on the highway to 31 32 at normal speeds .\\n120 The car is very smooth for a v4, my first, but I thought that the gas mileage should be More about 38, 45 .\\n121 Around town gas mileage is not as good at 22 with a mix of city and high way .\\n122 Mileage looks like it will be a little less than the older V6 Hondas\\n123 Some here have complained of poor gas mileage, but I've had mine almost two weeks, driven 300 miles so far in mostly city driving, and have a bit more than a quarter of a tank left .\\n124 5L V6 scoots sporty handling and acceleration good sporty leather seats highway gas mileage appearance package worth having no dealer service yet Negatives :\\n125 Tough negotiations w 6 Wash DC dealers city gas mileage road noise no keyless memory link w driver profiles steering wheel quality and size console storage tray outside mirrors don ?\\n126 VCM works out nice for better mileage .\\n127 hard seats, hard ride, more road noise than expected, disappointing gas mileage .\\n128 And great gas mileage averaging 28 .\\n129 Very disappointed in mileage .\\n130 Nowhere near the mileage the sticker shows .\\n131 I love the appearance of the car from the outside, and it has a much bigger feel to it, ride is a little stiff but smooth, engine is very responsive, however gas mileage is diappointing getting 5 mpg less then 06 Accord .\\n132 My only really complaint is the gas mileage is not as good as advertised .\\n133 Mileage is decent around 24, 27 .\\n134 Traded in my Oddysey for better gas mileage and more comfort .\\n135 So far not super impressed with gas mileage, and comfort, well lets just say my dealership just ordered a new seat cushion for me today .\\n136 Gas mileage will surely improve, hopefully .\\n137 The trade, off is a bit lower mileage but still better than most out there .\\n138 Having had to give up my 99 Accord due to very high mileage 170K\\n139 My my, I have never experienced such smooth performance, stability, pick, up, mileage and comfort that I am enjoying with my new 2008 Honda Accord .\\n140 Mileage so far is the big disappointment, low 20's, old Accord was never below 27mpg .\\n141 Telling me how good the gas mileage is not true .\\n142 5 in nob the display under the speedometer could be more helpful telling me how many miles gallon I have, telling me how my speed affects my gas mileage .\\n143 Gas mileage is great for a vehicle with this type of performance .\\n144 The car has ample power, but the gas mileage has been disappointing .\\n145 The car is as big and roomy inside as my old Acura Rl, handles better and gets better gas mileage .\\n146 It's fun to drive, and gets great gas mileage .\\n147 The best gas mileage I have achieved for this 4 cyl .\\n148 Handles great, good mileage, and wonderful ride .\\n149 The Accord was quiet, was easy to drive, seemed to be the right size, and would provide decent mileage .\\n150 It was the combination I was looking for, great look, good value, decent gas mileage, and Honda's resale value .\\n151 The windshield wash barely hits the windshield but I am mostly disappointed in the gas mileage .\\n152 I do not know what these people are talking about saying it gets bad gas mileage !\\n153 Car rides great, good fuel mileage .\\n154 Gas mileage is not as advertised , 25 mpg at most .\\n155 Gas mileage is OK, averaging about 23, 24 city , 31 highway normal driving, I don't drive fast, but I don't drive slow either .\\n156 Fuel mileage is disappointing 15 18 city 22 26 hwy .\\n157 Gas mileage not quite as good as advertised .\\n158 Gas mileage is above average .\\n159 Great power, great ride, and pretty good fuel mileage .\\n160 Gas mileage is at it's highest 24 mpg usually 22 mpg hwy .\\n161 The VCM definitely helps the mileage , it was very noticeable when it activated in the beginning, but is barely detectable now, except for the dash indicator .\\n162 Little 4cyl 5 spd LX and it got awesome gas mileage .\",\n \" After slowing down, transmission has to be kicked to speed up .\\n0 I wonder if the people who have problems with rattles and transmission were built in the US .\\n1 The transmission, I don't know what to tell you, but good luck if you don't learn from my mistake .\\n2 I did not notice any hesitation with the transmission until after I read about it last summer, and now I sense a slight bit occasionally .\\n3 I've had the same transmission problems hesitation issues as everyone else .\\n4 I immediately starting noticing transmission surge during 2nd and 3rd gear during first few minutes of driving .\\n5 The transmission is horrible, it shifts revs horribly at the wrong times, it putters when it hits 1 1 2 rpms while coasting unless you rev it or hit the breaks, if you try to start the car in really cold weather it makes a horrible grinding noise, the dash rattles ALL the time, when I try to accelerate getting on the freeway it doesnt move & scares me and when it does move it revs even after take your foot from the gas .\\n6 The transmission doesn't shift correctly, and it has almost caused me to get into an accident twice .\\n7 I'm pretty content with pretty much everything the car offers except the common issue of the transmission that doesn't want to seem to work when you need it .\\n8 Unlike the common concerns with the transmission, all of my concerns problems are with everything other than the drivetrain .\\n9 decent power for a 4 cylinder, but a dangerous hesitating transmission that toyota does not seem to want acknowledge or fix .\\n10 My Camry has been in the shop four times for the transmission problem and still has not been fixed .\\n11 First thing that come to me off the top of my head is the transmission .\\n12 The transmission is the worst ever for camry .\\n13 However, there are too many problems with the transmission .\\n14 I have the 4 cylinder with manual transmission .\\n15 I've had no significant transmission problems .\\n16 Transmission is terrible , , acceleration lag is a safety issue .\\n17 Transmission also can't decide what gear it wants to be in .\\n18 Transmission was replaced by Toyota in the first year .\\n19 The transmission feels terrible when it shifts .\\n20 The transmission is crap, and erratically shifts despite modest acceleration and conservative driving habits .\\n21 The transmission shifts smooth at all speeds .\\n22 No sign of the transmission problem people have complained about, but I'm not expecting a Porsche .\\n23 No rattles or transmission problems .\\n24 After driving my car almost 20,000 miles I have grown disappointed with the transmission hesitation problem as it did not show during the test drive .\\n25 Had 2 TSBs done to recalibrate engine, transmission .\\n26 The engine and transmission works flawlessly when a particular brand of fuel is used and I am absolutely sure I am correct .\\n27 I have the transmission problem .\\n28 No transmission problems as reported by so many others .\\n29 The engine transmission was a Jekyll Hyde affair .\\n30 Here are the transmission problems I've experienced :\\n31 Transmission is confused and CONTINUALLY shifts at speeds of 28 to 35, 38 to 42, and 45 to 51 MPH .\\n32 At this rate, the Transmission will go out @ 37,000 miles right after my Warranty expires !\\n33 Obviously they moved the costs around to provide for the new higher power V6 and the 6 speed transmission, which are so far the car's only redeeming features !\\n34 Toyota now has a fix for the accelerator hesitation and transmission problem !\\n35 EG7031 recalibrate ECM engine and transmission 9159 Bulletin #EG036, 07 .\\n36 I'm not sure what everyone talks about with hesitation transmission not enough power ?\\n37 The transmission cant make up its mind it hesitates to shift .\\n38 Transmission sticks in fourth gear and rpm surge while using the cruise control .\\n39 I am not having all the other issues everyone else is, not sure if its because mine is a manual transmission but I can't say how much I love it .\\n40 Toyota may have computerized the engine and transmission to get better gas mileage but the very best I can get is 25 mpg on the highway .\\n41 While in cruise control and going up a slight incline the transmission is constantly shifting and the rpm goes up and down by as much as 1500 rpm .\\n42 While driving on a straight and level road at about 40 mph the transmission is changing gears .\\n43 Loved the car but two transmissions failed within 19000 miles before I got rid of the car .\\n44 The transmission design has major problems and so did the replacement .\\n45 My dealer told me the new transmissions were on back order and couldn't even give me an ETA .\\n46 The side front windows limit visibility, the transmission hesitates when shifting, the back seat passenger room is spacious, the stereo system has a great bass and the versatility of CD changer, satellite, iPod, etc .\\n47 My transmission works perfectly fine, is fun to shift but does better on its own .\\n48 below the advertised numbers, and a jerky, balky, surging transmission that is difficult to use .\\n49 Terrible transmission that doesn't shift right .\\n50 the significant transmission hesitations are unacceptable and possibly unsafe, and the 4 cyl engine provides inadequate power when challenged .\\n51 I feel the plusses outweigh the negatives, but any prospective buyer should take a serious test drive under varying conditions and actually experience transmission hesitations and the mediocre acceleration performance .\\n52 After one week, I found a rusted conjunction block, which mounts the transmission .\\n53 BTW, this is an auto transmission .\\n54 I hate the transmission as it always hesitates to downshift when the power and speed is needed .\\n55 No problems with the transmission at all .\\n56 I have had no transmission issues or rattling, the comfort and ride of this vehicle felt to me much more high end then what I had paid .\\n57 There have also been a few isolated incidences where I have noticed a delayed surge in the transmission, which once put me in a potentially dangerous situation .\\n58 No transmission flares, hesitations, rattles or any other problems .\\n59 I had one for a year, Toyota was good to replace the two transmissions that failed, I was on my 3rd tranny, when my engine light came on due to a sensor in the tranny .\\n60 The gas pedal & transmission are out of sync .\\n61 At lower speeds when you try to give it gas an intermittent delay occurs between the gas pedal & transmission .\\n62 Acceleration or transmission shifting :\\n63 Quiet and refined ride, 4 cyl has sufficient power for everyday driving, and a smooth transmission that shifts well .\\n64 Transmission not nearly as smooth as previous 4 speed .\\n65 The transmission does occasionally get confused and takes a while to select the right ratio, but this does not occur frequently .\\n66 The transmission is weak, you need to think twice before jumping into traffic .\\n67 Obviously since I got the manual transmission I haven't had any problems with acceleration or anything like that .\\n68 Transmission has a very strange hesitation when shifting .\\n69 Performance stinks due to transmission, always looking for another gear, constantly jerking, dash lights always dimming, lower grill always slipping out .\\n70 When we returned home, I took the car to a transmission specialist and found out that the transmission is slipping .\\n71 Rattles, squeaking, and transmission troubles started shortly after .\\n72 It's VERY bothersome when the transmission down shifts the second one brakes when going down a mountain .\\n73 The speed control as well is balky in that the slightest uphill grade causes the transmission to down shift .\\n74 The accelerating is great, the transmission is smooth, it handles well and breaking is excellent .\\n75 I loved my '05 Camry 4 cyl automatic transmission LE, but I hate my '07 Camry 4 cyl automatic transmission LE .\\n76 Many people have mentioned a hesitation in the transmission I haven't seen it .\\n77 No transmission problems, reacts instantaneously .\\n78 However, the transmission is a little confused at times during downshifting .\\n79 I have had issues with the new 6 speed transmission, there is a shift flare between 3rd and 4th gear with my car .\\n80 Toyota is aware of the problem and they are actually replacing my transmission since they cannot figure out what the cause is .\\n81 Hopefully once I get a new transmission, it will be OK .\\n82 The combination of the weak engine at low engine speeds and the transmission hesitation is so bad that the car is, in my opinion, a safety hazard .\\n83 Dealer recalibrated ECU, engine and transmission .\\n84 Test drove identical camry at a different dealer transmission reacts same way .\\n85 Transmission slips, especially when the car is cold .\\n86 Transmission replacement did not resolve the problem .\\n87 Transmission is exceptionally smooth other than the first few shifts on a cold winter morning .\\n88 Cruise control gains, RPMs accelerate up hill causing engine to make loud noise while using cruise control, higher in back making it harder to judge while backing up and transmission not completely smooth in take offs .\\n89 The six speed auto transmission is very smooth .\\n90 After driving this car for a month it is very obvious to me that there is a design flaw in the transmission .\\n91 The transmission constantly shifts back and forth between gears .\\n92 The transmission is just terrible .\\n93 Transmission is a little different than previous Camrys but MPG and better accel .\\n94 It has plenty of power for my needs and I have noticed no transmission problems at all .\\n95 Like everyone else, I have the problem with the transmission .\\n96 I have had non, stop transmission problems, terrible sunroof noises, very uncharacteristic squeaks and rattles from everywhere in the dash, and unacceptable paint issues .\\n97 It has been in for a rattling sunroof pan within 1 month of purchase 3 trips for a transmission issue the radio quit working this summer and needed replaced and now the oil line for the VVTi has ruptured .\\n98 The transmission leaves a lot to be desired .\\n99 Some have found the transmission shifts too much, but it's only trying to keep the engine in the 2000, 2500 rpm range around town where there's some torque available .\\n100 Toyota made a real goof on the engine and transmission !\\n101 Transmission shifts up and down at highway speeds, which is annoying .\\n102 However, the transmission is sloppy .\\n103 It's automatic transmission is jerky and sometimes hesitant about changing gears .\\n104 MPG is not better than 24mpg w the 4CYL, the transmission slips, the throttle by wire has been non, responsive on several occasions, the ergonomics are off , and the dealership is very proud of their product, too proud .\\n105 Also, the shifting in the transmission is herky jerky .\\n106 the auto transmission is very poorly designed and Toyota hasn't decided what to do .\\n107 When approaching a stop with little or no gas pedal pressure, the transmission downshifts normally until the car shifts gears and suddenly lurches ahead at a higher speed .\\n108 After purchasing my 2007 Camry, which was a hassle because the salesman was pushy, I started having trouble with the transmission slipping !\\n109 The transmission hesitates, also downshifts, hunting between gears, then lurches .\\n110 The engine has a horribly long hesitation when trying to accelerate and the transmission downshifts with the slightest throttle pressure and on the most minor upgrades .\\n111 The only negative is the shifting of the transmission from 40\\n112 The transmission is the nightmare many have already talked about .\\n113 Perhaps the most annoying thing to me, the transmission kicks up and down on shallow declines , never had this in any automatic before .\\n114 If you care about a smooth transmission run don't walk away from the 4cyl automatic 2007 camry .\\n115 LE 2007, 4cy, minor transmission hesitations as I see many other are experencing .\\n116 Transmission does not know sometimes what it is doing when it ?\\n117 Surprisingly agile for a 4 cyl, auto transmission requires manual downshift for quick instant power .\\n118 The transmission is flawed, it takes a few seconds for it to speed up, but once it goes it goes fast, I love the shift gate, great for easy passing !\\n119 Due to lack, of, power or transmission problem, car down, shifts revs to 3000\\n120 Transmission is smooth and the 2 .\\n121 I did have a problem with the transmission but took it in and they reprogrammed the 2 computer chips in there and WOW what a difference that made .\\n122 Power is great, transmission shifts are smooth and accurate .\\n123 Instead of giving me a new car they finally admitted the problems with transmission and replaced it with a new one, free of cost to me cost to them .\\n124 The transmission and cruise control is a joke .\\n125 The transmission hesitates and stumbles .\\n126 After about 3000 miles on my 2007 Camry XLE V6 6sp Auto, it's been in the shop 4 times already and the last call from the dealer was to replace the transmission .\\n127 transmission hunts for gears, ride quality much worse than even a mediocre car, Auto sound level doesn't work, accessory outlets do not work unless car is running or acc is on , radio shuts off when engine is shut off .\\n128 The transmission is not the smoothest .\\n129 268 HP V6 with 6 speed auto transmission is very responsive and smooth .\\n130 The transmission is seamless and, with six forward gears, the engine is virtually never strained in ordinary driving .\\n131 8 Transmission hunts for gears 9Driver side head liner molding buzzes .\\n132 11Transmission unexpectly deaccelates during a slow down .\\n133 However I have noticed, like others, that the new transmission is not that smooth, especially when accelerating from a stop .\\n134 It can occasionally accelerate quickly and jerk you ahead, or hesitate, and sometimes I've noticed the car slow down unnaturally via the transmission .\\n135 The 5 speed transmission shifts like one would with a manual .\\n136 The transmission, or more specifically, the power transfer is scary .\\n137 The reprogramming of the transmission shifting seemed to help for awhile, but it's reverted back .\\n138 I'll probably sell it to avoid an expensive transmission repair after the extended warranty expires .\\n139 The transmission computer is a major issue .\\n140 Dealers do not handle the transmission matters well as I've had no luck in clearing up the inadequacies .\\n141 After researching on the internet I found that the computer for the transmission needed reprogrammed .\\n142 The transmission is jerky and the gas mileage is terrible .\\n143 It has major transmission issues, which I have had fixed twice .\\n144 My transmission works seamlessly and there are no quality issues whatsoever .\\n145 The transmission is driving me crazy .\\n146 While the transmission is downshifting you can feel it thumping through the gears and an audible banging sound can be heard coming from the trans .\\n147 Transmission was very rough, dealership re, programmed, it's ok now .\\n148 The new transmission shifts too frequently to truly optimize gas consumption .\\n149 The transmission is the absolute WORST, it is very dangerous and can cause an accident .\\n150 They have finally fixed my transmission .\\n151 Only problem has been the proprietary transmission glitch everyone talks about .\\n152 I have 4 cyl with manual transmission , lack of power but great fuel economy .\\n153 Transmission big issue and also rattles more than the 2001 Avalon that had 175K miles\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 14 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Cluster #2는 자동차에 대한 리뷰로 군집화됨" + ], + "metadata": { + "id": "V9j5BGrWgPJu" + } + }, + { + "cell_type": "code", + "source": [ + "document_df[document_df['cluster_label']==3].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 637 + }, + "id": "78J6UyyGg1zF", + "outputId": "fa43bd35-1a09-4209-fe7b-a66b55bdd17d" + }, + "execution_count": 15, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "13 comfort_honda_accord_2008 \n", + "17 comfort_toyota_camry_2007 \n", + "23 performance_honda_accord_2008 \n", + "49 price_amazon_kindle \n", + "30 quality_toyota_camry_2007 \n", + "19 seats_honda_accord_2008 \n", + "\n", + " opinion_text \\\n", + "13 Drivers seat not comfortable, the car itself compared to other models of similar class .\\n0 ... \n", + "17 Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n1 Great gas mileage and comfortable on long trips ... \n", + "23 Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n0 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n1 Overall performance is good but comfort level is poor .\\n2 ... \n", + "49 If a case was included, as with the Kindle 1, that would have been reflected in a higher price .\\n0 lower overall price, with nice leather cover .\\n1 ... \n", + "30 I previously owned a Toyota 4Runner which had incredible build quality and reliability .\\n0 I bought the Camry because of Toyota reliability and qua... \n", + "19 Front seats are very uncomfortable .\\n0 No memory seats, no trip computer, can only display outside temp with trip odometer .\\n1 ... \n", + "\n", + " cluster_label \n", + "13 3 \n", + "17 3 \n", + "23 3 \n", + "49 3 \n", + "30 3 \n", + "19 3 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
13comfort_honda_accord_2008Drivers seat not comfortable, the car itself compared to other models of similar class .\\n0 ...3
17comfort_toyota_camry_2007Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n1 Great gas mileage and comfortable on long trips ...3
23performance_honda_accord_2008Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n0 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n1 Overall performance is good but comfort level is poor .\\n2 ...3
49price_amazon_kindleIf a case was included, as with the Kindle 1, that would have been reflected in a higher price .\\n0 lower overall price, with nice leather cover .\\n1 ...3
30quality_toyota_camry_2007I previously owned a Toyota 4Runner which had incredible build quality and reliability .\\n0 I bought the Camry because of Toyota reliability and qua...3
19seats_honda_accord_2008Front seats are very uncomfortable .\\n0 No memory seats, no trip computer, can only display outside temp with trip odometer .\\n1 ...3
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"document_df[document_df['cluster_label']==3]\",\n \"rows\": 6,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 6,\n \"samples\": [\n \"comfort_honda_accord_2008\",\n \"comfort_toyota_camry_2007\",\n \"seats_honda_accord_2008\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 6,\n \"samples\": [\n \" Drivers seat not comfortable, the car itself compared to other models of similar class .\\n0 It's very comfortable, remarkably large inside and just an overall great vehicle .\\n1 Front seats are very uncomfortable .\\n2 I'm 6' tall, and find the driving position pretty comfortable .\\n3 However, there are a couple of things that kill it for me 1 terrible driver seat comfort, kills my back 2 lack luster interior design, my Acadia has much better comfort 3 the VCM drives me crazy because the constant change in cylinder use is perceptible enough to be an annoyance .\\n4 The seats are extremely uncomfortable .\\n5 While the Accord is no Acura it is a close relative in terms of quality and comfort .\\n6 I previously owned a 98 Avalon, and found the seats more comfortable than the Honda .\\n7 I'm very sad , I loved my daughter's Civic and the dealer service is fantastic, but even good service can't help the uncomfortable seats .\\n8 Overall performance is good but comfort level is poor .\\n9 The ride is a great balance between handling and comfort .\\n10 Although it is fun to drive and quality seems ok, the leather seats are very uncomfortable, especially on a long drive .\\n11 Although not the fastest, most luxurious, or technologically advanced in the very competitive mid, size sedan segment, the Accord strikes the perfect balance of sport, comfort and value, creating a vehicle that feels and acts like a much pricier machine .\\n12 Has lots of features, is comfortable, everything works .\\n13 The two door coupe is very comfortable and roomy and draws plenty of attention .\\n14 The seat is extremely uncomfortable .\\n15 The driver's seat is very uncomfortable .\\n16 The head rest tills forward which pushes the driver's head forward at a very uncomfortable position .\\n17 The front driver seat's lumbar support seemed very uncomfortable at first .\\n18 The car is comfortable and QUIET .\\n19 No big deal The car is huge and very comfortable .\\n20 Very tight, runs great, very comfortable to drive .\\n21 The interior quality is OK, my 1999 Accord EX had a better comfort level on the seats .\\n22 Initially the dashboard controls were a little intimidating, but it doesn't take long to get comfortable with them .\\n23 I fit in the Coupe comfortably .\\n24 The driver seating is uncomfortable .\\n25 It's a comfortable ride and is very high quality .\\n26 For a 4 cylinder car I am surprised at the comfortable and peppy drive .\\n27 This a good choice if you need an affordable and comfortable commuting vehicle but hate the idea of a boring boxy sedan .\\n28 What a car, design, ride, comfort, 270 watt audio system, I love this car .\\n29 The seats are very comfortable & supportive .\\n30 I like my Accord very much, but had I known the drivers seat was so uncomfortable I would have never bought it .\\n31 Aside from missing the turbo's acceleration, I've preferred the Accord's better mileage, handling and comfort .\\n32 This Accord is the only large car I found with upscale comfort amenities and a good manual transmission .\\n33 Comfort inside is better than expected .\\n34 My family of 5 can comfortably ride in this car .\\n35 This car is a dream from the GAS to the STYLE to the COMFORT .\\n36 Its the most comfortable Accord I have had .\\n37 I do find the lumbar on the driver's seat a bit uncomfortable though .\\n38 The car is very comfortable, the steering is tight and precise .\\n39 The seats are comfortable, and there is ample leg room in the front and rear .\\n40 Most uncomfortable seats in any vehicle I have ever owned .\\n41 It is very comfortable, easy to drive and park .\\n42 I would recommend this car for great value, comfort, & fun to drive !\\n43 Seats are firm but not uncomfortable , very BMW like .\\n44 Rides with comfort and motor will pick up if you need it .\\n45 It gives a sporty driving feel and offers a very comfortable Highway ride .\\n46 Uncomfortable in Camry, Had a Nissan before, rough ride .\\n47 Test drove Honda and enjoyed the firm yet very comfortable ride .\\n48 It's very comfortable, has pretty much every luxury feature you might want, and is still fun to drive .\\n49 DON'T rely on your test drive, the seats are Very uncomfortable and when the engine goes into the econo mode the vehicle shifts rocks violently forward and when leaving the econo mode it shifts rocks forward once again which means that the vehicle is CONTINUOUSLY SHAKING AND ROCKING .\\n50 Seats are very comfortable and ride is very smooth !\\n51 My only complaint is comfort .\\n52 The front seats are extremely uncomfortable after anything more than 15 minutes of driving due to what I see as a design flaw, the seat curvature is too great, and even with the lumbar support all the way retracted, it still feels like there is some type of bar sticking out in the wrong part of my back .\\n53 However, the 08 Accord is well designed, handles well for its size and the comfort level is so much better than the TL .\\n54 Absolutely got a great car, roomy, comfortable, great ride for a nice price .\\n55 Fun to drive, safe, reliable, and comfortable .\\n56 Driver's seat is not fully adjustable using 8, way power seat which is very uncomfortable .\\n57 The car is solid, beautiful, comfortable, fuel efficient and big enough for my family of 5 .\\n58 Everyone loves the way it rides and we took it to the lake without a single complaint of comfort .\\n59 Driving 55 miles per hr between Houston and Austin this slow is very painful, boring to drv,Our Avalanche averaged 15 city with a very comfortable seat and only 20 highway but the vast majority of our driving is in the city not a good trade off .\\n60 At 6'5 it is very comfortable .\\n61 Good looking inside and out, comfortable and roomy, commendable performance, and excellent gas mileage .\\n62 However, long, distance comfort is poor due to hard, narrow and deeply, bucketed seats combined with a very taut suspension which transmits even minor road imperfections through the whole vehicle .\\n63 The seat contour creates uncomfortable pressure points which quickly become tiring and downright painful .\\n64 The Camry was very comfortable, but not sporty and the ride was boring .\\n65 s a great car, spacious, comfortable, fun to drive, and handles very well .\\n66 At first the seats seemed stiffer than I'd like, but after making a 2 1 2 hour trip, It felt very comfortable once I got the seat and lumbar adjusted to my liking .\\n67 extremely comfortable, more power than camry, lots of space, good fuel economy, and mean looking Cons :\\n68 Ride, comfort, visibility, braking, steering and acceleration are excellent for a car of its size and price .\\n69 The '08 is more comfortable and handles quite a bit better than the very good experience we had with the '06's .\\n70 Door closure is solid, leather seats are very comfortable .\\n71 From the hard and uncomfortable driver seat, excessive body roll, several rattles in the interior and intrusive road noise, the vehicle just does not strike a chord n .\\n72 In fact, I find my 2006 Civic Ex w Nav to be a better built, more comfortable and more engaging car .\\n73 Lots of room and very comfortable .\\n74 I purchased this car because the amount of time I spend on the road, I need a comfortable car that is reliable .\\n75 This car is comfortable, loaded with options and every one that gets into it loves it .\\n76 Seats are not very comfortable and not happy with the heated seats .\\n77 The seats are very comfortable and I love the cloth .\\n78 The Accord has looks, comfort, great ride and reliability .\\n79 Ample room for someone that is 6'2 , and extremely comfortable for my daily commute .\\n80 An extremely comfortable and capable sedan .\\n81 I went for comfort over performance to fit it in my budget so the EX, L with the 4 cyl engine .\\n82 So far, the reliability has been as expected, it is comfortable on my back, and the gas mileage has been pretty good .\\n83 The interior design is roomy and very comfortable .\\n84 Steering nice and tight, seats a little stiff but comfortable .\\n85 Interior is very roomy, and I can sit comfortably in the rear seat at 6'2 .\\n86 Great car, really comfortable and quiet .\\n87 Solid build, comfortable interior, smooth ride, fuel efficient averaging 27 .\\n88 This is my second Accord and it's bigger, zippier and more comfortable .\\n89 This car is stylish and very comfortable to drive .\\n90 It is comfortable, easy to drive, and fast !\\n91 Very comfortable and roomy vehicle .\\n92 The ride is firm but not harsh, It is more comfortable than the Maxima and looks much better than any Camry .\\n93 I previously owned a Chrysler 300 2006, so it is difficult going from a real comfortable interior, really massive dash to a bland and old fashioned interior .\\n94 Fun to drive, economic, very comfortable, and excellent on the highway .\\n95 It's much more comfortable than the Vette and I absolutely love driving it .\\n96 It has great handling and does so with comfort .\\n97 Have to say the comfort, look, design and how it drives is first rate .\\n98 Back seat comfort and entry exit are great .\\n99 Ride is superior, comfortable seats, radio excellent .\\n100 my first fill up was 26 mpg mixed city and hwy I only expect it to get better, steering is tight and precise, only complaints are road noise is more than i like but its livable, rain or just dew pours in right on top of the power window controls when the window is cracked, but window guards have fixed that, its a fun car to drive, and for what it is, its comfortable, controls are great, easy to reach, I'm looking forward to a lot of great miles with this car .\\n101 The Honda was very comfortable to drive and averaged 32 miles per gallon .\\n102 The leather seat is not the most comfortable, but not bad .\\n103 I drive 140 miles daily, and found the comfort the best feature .\\n104 It drives well, the satellite radio is awesome and it has the comfort of home .\\n105 It has a comfortable ride and most controls are logical, but the location of the volume knobs takes some getting used to .\\n106 Excellent car, would recommend this to anyone looking for a sharp, reliable, comfortable sedan .\\n107 A little pricy but it's really a comfortable car and a great driving machine .\\n108 Great comfort in the Accord .\\n109 Awesome interior with great comfort .\\n110 Three months and I still can't get comfortable in the LX .\\n111 For test drive , I wish I had removed the hard plastic from the driver's seat tried harder to get comfortable in the non, electric seat spent more time on rough roads .\\n112 but I do miss the more comfortable ride of my '05 & '96 Camry's .\\n113 Otherwise the car is comfortable, stylish, spacious and it handles well .\\n114 Very comfortable ride compared to my Lexus .\\n115 My main reason for purchasing this car was to get a fuel, efficient vehicle that also was comfortable to drive on long trips .\\n116 Interior is nice but not as comfortable as past Accords and feels a little cheap .\\n117 I am extremely satisfied after the first week though it was more costly, I still like the smooth power and handling of the V, 6, the comfort of the leather interior, and something new for me .\\n118 This Accord model has a great balance of features that blends attractive styling, driveablity, build quality, economy, and comfort with all the loaded options that I will enjoy over several years and 100000\\n119 I wanted a larger car that was comfortable and the redesign of the Accord making it bigger made the difference .\\n120 The car is roomy inside, comfortable, handles and performs great and is fun to drive .\\n121 Cloth front seats big & comfortable .\\n122 Seats are stiff but once adjusted seem to become more comfortable .\\n123 Traded in my Oddysey for better gas mileage and more comfort .\\n124 So far not super impressed with gas mileage, and comfort, well lets just say my dealership just ordered a new seat cushion for me today .\\n125 Comfort is my only real complaint .\\n126 My my, I have never experienced such smooth performance, stability, pick, up, mileage and comfort that I am enjoying with my new 2008 Honda Accord .\\n127 I admire engine performance and comfort while driving atleast 30 mile a day to job .\\n128 On the inside, it was for the most part comfortable and luxurious .\\n129 The only hiccup I can report is that I think that the seats in our 2008 Odyssey are a bit more comfortable .\\n130 Don't get me wrong, the Accord is a comfortable car, I am just a big guy and the seats just feel like they could use a little more of something .\\n131 The 2008 Honda Accord EX, L V6 is an ideal combination of comfort, economy, and pleasure !\\n132 No, the Honda does not have the anti, sway of those vehicles in high, cornering speeds, but it is more comfortable .\\n133 Was looking for something fun, fast, comfortable and practical and got it all with this car .\\n134 The car achieves a nice balance between sportiness and comfort .\\n135 There is an amazing comfort level with this car .\\n136 Comfort based on the quality and attention to detail Honda efficiently packs into this newly reclassified full size car .\\n137 The interior is comfortable, neat and you can find everything within reach .\\n138 The heated leather seat is very comfortable and audio system is rocking .\\n139 Although it's a lower trim level, it has high quality interior trim very comfortable seats and and very smooth, quiet ride .\\n140 I love the interior layout and comfort .\\n141 My only complaint is the seat is not comfortable for a long period of driving and if it is raining and you barely roll the window down uou will get soaked .\\n142 Very roomy and comfortable even with 5 adults .\\n143 At 6'3 I can sit comfortably in the drivers seat and have an unobstructed view out the windows .\\n144 00 per gallon I wanted something more fuel efficient but large enough to seat four adults comfortably and provide a sense of safety too .\\n145 I commute alot, so interior is important to me, and its leather is does not seem cheap and comfort is top notch .\\n146 Gliding can best define the comfort and quietness of the ride inside .\\n147 With the leather seats, comfort is close to EX, L's at a best buy price .\\n148 Its ride, comfort and overall performance is an absolute joy .\\n149 Traded in a 2007 Hyundai Azera Limited that depreciated too fast for my comfort zone .\\n150 Leather seats are very comfortable .\\n151 Interior is very comfortable w ergonomic design in mind .\\n152 Front seats much more comfortable .\\n153 Comfortable, good in snow, easy to drive .\\n154 The driver, side seat is not comfortable .\\n155 This car is very comfortable car to drive .\\n156 Driver seat could be more comfortable however, but I love everything about it .\\n157 I find the interior comfortable for short and long trips .\\n158 My wife does say the vehicle is not as comfortable for long trips as other cars we've owned .\\n159 Comfortable ride no thanks to the comfort of the drivers seat !\\n160 Very comfortable drive, holds the road very nicely and a blast to drive .\\n161 The Accord is so large, comforting, and easy to understand radio system .\\n162 I was slightly concerned about all the reviews with the seats being uncomfortable .\\n163 This is by far the most comfortable vehicle I have owned .\\n164 When I bought this car a year ago, I initially wrote a review stating I may have buyer's remorse due to extremely uncomfortable driver's seat .\",\n \" Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n1 Great gas mileage and comfortable on long trips .\\n2 Good gas mileage, comfortable seating, lots of leg room .\\n3 Lots of comfort for the price .\\n4 The ride is loud and not comfortable .\\n5 I drive 2 hours to work each day and it is just not comfortable to me .\\n6 Getting about 26 mpg mixed city hwy with conservative driving, seating 4 people comfortably .\\n7 The ride is quiet and comfortable .\\n8 Styling is bland, the engine isn't strong at all, and the car doesn't deliver good comfort while driving it .\\n9 The seats aren't comfortable either .\\n10 It is relatively comfortable inside .\\n11 It's a pretty good car, reliable, comfortable as far as it goes, but limited rear visibility because of high rear bumper, and a problem with its computer learning my driving style .\\n12 The driver seat is still soft and mostly uncomfortable .\\n13 The ride is comfortable and it seems to ride a little higher than the average sedan, which I like .\\n14 I've had 3 BMWs and only one of them could offer a more comfortable ride than the Camry .\\n15 Second the internal comfort id awful .\\n16 The previous soft seats were replaced with hard cheap ones which are very very uncomfortable and give me back pain .\\n17 If you keep in mind that the Camry is a comfort car, you may even enjoy the experience .\\n18 While the 4 cylinder does not have the punch of the Honda Accord 4 cylinder, the comfort and quietness of the ride won out .\\n19 No hestitation, comfort is great in front in back .\\n20 I feel uncomfortable driving this car and will get rid of it .\\n21 Very comfortable, great styling .\\n22 I was surprised by how quiet the cabin was and just how comfortable it was to sit in and drive .\\n23 This car offers poor driver's seat comfort, poor vision , only average ride quality, gas mileage \\n24 We have had this Camry about two years now, and it is not a boring car but it is smooth, comfortable and has good road manner, and overall it is a good car .\\n25 I'd highly recommend anyone buy this car if they are seeking an affordable, comfortable, reliable vehicle .\\n26 You can not get that comfort with any other automaker other than perhaps Honda .\\n27 Looks are great and interior is comfortable, but it ?\\n28 I needed a comfortable commuter that I could also run around with the family in .\\n29 great ride, quiet comfortable spacious cabin, superior electronics , fair price and good looks .\\n30 You can't have it both ways, either a car is full of power and stiff suspension or it's smooth and comfortable on the road .\\n31 The interior is very luxurious and comfortable, however the car feels slower than my 2002 Camry LE .\\n32 For the comfort and entertainment of the ride, I like the Camry .\\n33 The driver's seat is really comfortable .\\n34 I have had no transmission issues or rattling, the comfort and ride of this vehicle felt to me much more high end then what I had paid .\\n35 I love the look, and the comfort, but would never buy one again .\\n36 I've read other reviews stating that the leather seats were not comfortable for long drives due to lack of cushion support, but that's not been the case for me especially after recently driving from Houston to Key West, Fla .\\n37 The seats were very comfortable .\\n38 The car comfort, looks, performance and fuel economy are great but the paint is a disaster .\\n39 Front seats are not comfortable on long trip .\\n40 I was not sure at first about trading my 01 Honda Accord but have been more than satisfied with the performance, looks, and comfort .\\n41 A little stiffer ride than the xl and xle models I have had, but still comfortable and quiet .\\n42 Very comfortable ride and seating .\\n43 Very low interior noise level, which adds to the long trip comfort .\\n44 The ride, comfort, and drive is as expected, however, the quality and reputation of yore are completely gone for the flagship Camry .\\n45 Over the month it was in the shop, we rented several different cars and nothing seemed to measure up to the comfort and options of the Camry .\\n46 The seat comfort is not as it was and I found that the gas, brake pedals are offset too much to the left of my body centerline .\\n47 Very comfortable, quiet interior .\\n48 Seats are padded more firmly than previous model but comfortable on trips .\\n49 Feels expensive, yet comfortable with larger interior than my Grand Prix .\\n50 Trunk is big and rear seat very comfortable for 2 and will seat 3 .\\n51 Headroom body room comfort great for my 6'1 250 lbs .\\n52 I feel that the Camry just gets better and better in terms of comfort, styling and performance with each generation .\\n53 It looks awesome, turns like it's on rails, has a great sound system, and is just comfortable and fun to drive .\\n54 It is very quiet and comfortable .\\n55 Smooth, comfortable, reliable, fast .\\n56 Very comfortable seating position for both me and my husband .\\n57 The interior is extremely comfortable, and spacious .\\n58 For the price I couldn't have asked for a better performing, comfortable and stylish whip .\\n59 The seating is relatively comfortable .\\n60 Other than that, technology is mind blowing on this sedan and performance is incredible, with a smooth and comfortable ride .\\n61 I'm 6'3 and I find this car very comfortable to drive or ride in .\\n62 My friends say my car is just like a Lexus and I have to agree, very comfortable and beautiful .\\n63 Seats are comfortable, but wish the seat bottoms tilted back more into a bucket position .\\n64 Solid, high quality, comfortable and quiet .\\n65 Uncomfortable head restraint, too close to my head .\\n66 Superb handling, performance and comfort .\\n67 Turns out, it was one of the smoothest, most comfortable rides ever .\\n68 I bought this car smitten by its exterior look and interior comfort .\\n69 Yes, it is very comfortable, esp for the price paid .\\n70 Very quiet and comfortable ride, more than enough power .\\n71 It is very reliable and comfortable .\\n72 It's very comfortable and a quiet ride with low levels of road and wind noise .\\n73 The seats are way to low to the ground making long drives uncomfortable .\\n74 I do not find the front seats as comfortable as the seats in my old 96 Ford taurus .\\n75 Toyota made many improvements since 03, including more comfortable front seats, better rear seat room and comfort .\\n76 Very comfortable, quite and smooth ride .\\n77 The sound system is incredible, the seats are comfortable, the controls are ergonomic and straight forward and the take off power is quite impressive .\\n78 My passengers are expecially happy with it and love the room, comfort, and adjustability .\\n79 On longer trips, however, they have a tendency to fall asleep, , which I think emphasizes how comfortable, smooth, and quiet it is .\\n80 It is a very comfortable car that gives us options that we never had on previous vehicles .\\n81 I test drove and compared similar 4 door sedans like the Maxima, Accord, Mazda6, and noticed that none had all the features,performance,comfort ,safety,and looks that the Camry has .\\n82 The navigation works flawlessly, comfortable seats .\\n83 I have to say the car rode great,comfortable and gas mileage great .\\n84 I would recommend this car to anyone looking for a comfortable ride as well as good fuel economy .\\n85 The seats were very comfortable on a four and a half hour trip, and wind and road noise were minimal .\\n86 The interior is much more comfortable than my last 3 Camrys and the exterior styling is oh so chic .\\n87 Comfortable and quiet with excellent gas mileage .\\n88 Comfort is great, mileage is good overall, better on the road than expected , compared to my 1999 Camry .\\n89 Having flown 26 different aircraft and driven cars for 61 years, I find the 2007 Camry to be the most uncomfortable cockpit I have every been in .\\n90 The headrest presses into my head at an uncomfortable angle and it is imposssible to tell where the front of the car is for parking .\\n91 The window sill is too high and the armrest too low to be comfortable .\\n92 The new looks are what attracted it to me initially, but its relatively smooth drive, comfort and reliability sold me on it .\\n93 It is a beautiful sapphire blue, has really nice lines, is very comfortable, is plenty peppy, and hugs the road .\\n94 The ride is very comfortable, although I'm 6'6 and I didn't think head room was an issue but I do think leg room could be better, I think this is mainly because the back seats have tons of leg room .\\n95 It is so comfortable and drives perfect .\\n96 Overall this car is very quiet, comfortable, smooth, powerful, and absolutly the best mid, size in the current market .\\n97 Leather seats are comfortable, Nav system is easy to use .\\n98 I only have a vibration shimmy problem at 70 mph, visited dealer three times and ended up with changing a new tire and now the ride is even quieter and comfortable .\\n99 Leather seats were comfortable .\\n100 Leather interior very comfortable .\\n101 My conclusion after doing a ton of research regarding safety, reliability, comfort and gas mileage :\\n102 the Hyundai Sonata is thousands of dollars cheaper and matches the Camry in all respects except comfort .\\n103 Bottom line was that I was going to be in that driver's seat for years to come and I was not going to skimp on the critical comfort factor .\\n104 While the '03 was roomy and comfortable, the steering and handling were very vague .\\n105 The interior is upgraded markedly, and although there is a bit less headroom, the added telescoping feature of the steering wheel combined with the greater travel of the seat yields greater comfort .\\n106 , a luxurious comfort feature, and a fuel consumption that is best in the class .\\n107 Nice looking interior but seats are very hard and are not comfortable for long trips .\\n108 Top notch rating on interior comfort .\\n109 The car is VERY comfortable and the air conditioning is perfect for the heat here in Arizona .\\n110 Extremely comfortable with 3 separate power driver seat adjustments .\\n111 I purchased a Camry LE approximately 2 months ago, it's a smooth comfortable ride .\\n112 I selected the Camry for its comfort and reliability .\\n113 This new Camry is indeed very comfortable with quiet and soft ride .\\n114 Very uncomfortable when driving long distances .\\n115 I am not real fond of the electric seat and I find it is not as comfortable as my F150 pickup on trips .\\n116 This car is easy to drive, great gas mileage and comfortable .\\n117 However, when we drove the Camry we were impressed with its looks and the comfort of the ride .\",\n \" Front seats are very uncomfortable .\\n0 No memory seats, no trip computer, can only display outside temp with trip odometer .\\n1 needs power seats on the passenger side .\\n2 I haven't had any back pain from the seats, maybe these people exceed the seat weight limit ?\\n3 There is a great deal of road noise in the cabin and the seats are very low quality .\\n4 Power seats are not fully adjustable .\\n5 Front seats are too narrow and not deep enough .\\n6 The seats are extremely uncomfortable .\\n7 I previously owned a 98 Avalon, and found the seats more comfortable than the Honda .\\n8 The seats in the Honda are more firm .\\n9 I'm very sad , I loved my daughter's Civic and the dealer service is fantastic, but even good service can't help the uncomfortable seats .\\n10 It cost me thousands of dollars to get rid of it, but the seats gave me and my wife back pain after 20 minutes of driving !\\n11 Although it is fun to drive and quality seems ok, the leather seats are very uncomfortable, especially on a long drive .\\n12 The seats are decent, the interior design is excellent IMO as well as the exterior design, and thus far it has been extremely reliable .\\n13 In fact, I love the car just wish Honda wouldn't have made such horrible seats .\\n14 Body wasn't used to seats like if you bought a new mattress .\\n15 The interior quality is OK, my 1999 Accord EX had a better comfort level on the seats .\\n16 I just purchased an Accord Sedan with leather seats .\\n17 Only needs to add drivers seat memory, 2, tone perforated leather, xenons, rear seat interior illumination mounted under front seats, and better tilt .\\n18 I can also fit three car seats in the back which was the reason I was able to go back the the Honda family .\\n19 The seats are very comfortable & supportive .\\n20 I test drove an EX, L and felt the seats were too firm plus, the EX, L seemed too slow .\\n21 This Accord has more road noise than I like and the seats tend to be hard, unlike my other Accords .\\n22 Engine performance lacks punch after 60, head rest are poor design, lacks driver seat memory rear seat a c, radio system is marginal compared to Bose, Seats are hard and small for a large person .\\n23 The seats are comfortable, and there is ample leg room in the front and rear .\\n24 Most uncomfortable seats in any vehicle I have ever owned .\\n25 Only 2 things could make it better memory seats and a smoother shifting transmission .\\n26 Seats are firm but not uncomfortable , very BMW like .\\n27 Advise anyone considering the L to drive one for awhile if you can , some cannot stand the seats .\\n28 The seat cover was coming out in between the seats .\\n29 The only for sure complaint I have is the seats seems to hurt my back after I drove for a period of time, this may be because I am use to my silverado truck with leather bucket seats .\\n30 DON'T rely on your test drive, the seats are Very uncomfortable and when the engine goes into the econo mode the vehicle shifts rocks violently forward and when leaving the econo mode it shifts rocks forward once again which means that the vehicle is CONTINUOUSLY SHAKING AND ROCKING .\\n31 Seats are very comfortable and ride is very smooth !\\n32 It's a black beauty with comfy leather seats .\\n33 The front seats are extremely uncomfortable after anything more than 15 minutes of driving due to what I see as a design flaw, the seat curvature is too great, and even with the lumbar support all the way retracted, it still feels like there is some type of bar sticking out in the wrong part of my back .\\n34 However, long, distance comfort is poor due to hard, narrow and deeply, bucketed seats combined with a very taut suspension which transmits even minor road imperfections through the whole vehicle .\\n35 At first the seats seemed stiffer than I'd like, but after making a 2 1 2 hour trip, It felt very comfortable once I got the seat and lumbar adjusted to my liking .\\n36 Great leg room in the back and the seats a very supportive .\\n37 Door closure is solid, leather seats are very comfortable .\\n38 Ride is very good, but seats are just a little firm .\\n39 Seats are not very comfortable and not happy with the heated seats .\\n40 The seats are very comfortable and I love the cloth .\\n41 Seats are little on the hard side .\\n42 The black leather seats feel a bit hot on the back in the warm weather but otherwise no complaints about the interior .\\n43 Steering nice and tight, seats a little stiff but comfortable .\\n44 We wanted three things, heated seats and mirrors and an easy to get out of back seat for some aging friends .\\n45 Ride is superior, comfortable seats, radio excellent .\\n46 5 Seats= Like sitting on a church pew .\\n47 Leather seats are the only thing of good quality .\\n48 Problems with steering wheel, windows & seals, seats .\\n49 Smooth responsive acceleration,top of the line high quality supple comfy leather seats .\\n50 Also, amazing leg space in front AND back seats , the Accord could almost be considered a full size sedan .\\n51 5L V6 scoots sporty handling and acceleration good sporty leather seats highway gas mileage appearance package worth having no dealer service yet Negatives :\\n52 First off the new body style is very appealing and the new seats are more forgiving for larger men .\\n53 The heated seats for me and my passenger are a plus for the cold weather .\\n54 hard seats, hard ride, more road noise than expected, disappointing gas mileage .\\n55 The seats are supportive and the materials are great .\\n56 You get a V, 6, heated leather seats, XM, 18 rims .\\n57 Cloth front seats big & comfortable .\\n58 Seats are stiff but once adjusted seem to become more comfortable .\\n59 The seats are very firm, but getting used to this .\\n60 The seats in my 2008 which is just like a 2009 are considerably less than I'm used to from Honda .\\n61 The only hiccup I can report is that I think that the seats in our 2008 Odyssey are a bit more comfortable .\\n62 Don't get me wrong, the Accord is a comfortable car, I am just a big guy and the seats just feel like they could use a little more of something .\\n63 I have two herniated disks and the seats of the Honda have alleviated the pain in my legs and back when I drive .\\n64 Additionally, the standard seats are not my favorite .\\n65 Although it's a lower trim level, it has high quality interior trim very comfortable seats and and very smooth, quiet ride .\\n66 Decent accel, huge back seat for my kids baby seats large friends .\\n67 we don't need moonroof, heated seats side mirrors we live in S .\\n68 With the leather seats, comfort is close to EX, L's at a best buy price .\\n69 Seats are a bit too firm for me .\\n70 Leather seats are very comfortable .\\n71 The inside and outside pads should ALWAYS wear evenly Always had stiff ride and seats .\\n72 I have a bad lower back, and the lumbar support on the seats is a life saver !\\n73 Front seats much more comfortable .\\n74 The satellite radio cuts out constantly, the heated seats are barely warm, the sound system is pathetic and the brakes wore out around 15,000 miles google it .\\n75 We are both tall, 5'11'' and 6'2 and have no problems with the seats .\\n76 After driving it for a few months I found the seats are tough on the lower back on long runs and it need a few more inches to go back .\\n77 Seats are too firm and leather is quite hard in character and feel .\\n78 I was slightly concerned about all the reviews with the seats being uncomfortable .\\n79 I love the seats, they are supportive .\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 3\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 15 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Cluster #3은 전자기기 + 자동차 내비게이션에 대한 리뷰" + ], + "metadata": { + "id": "ayBCe0gxg36N" + } + }, + { + "cell_type": "code", + "source": [ + "document_df[document_df['cluster_label']==4].sort_values(by='filename')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 268 + }, + "id": "LH7ZfhGuhA-g", + "outputId": "65bc1802-9836-44fc-f56c-5aced3c39040" + }, + "execution_count": 16, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "48 interior_honda_accord_2008 \n", + "26 interior_toyota_camry_2007 \n", + "\n", + " opinion_text \\\n", + "48 I love the new body style and the interior is a simple pleasure except for the center dash .\\n0 ... \n", + "26 First of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n0 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windsh... \n", + "\n", + " cluster_label \n", + "48 4 \n", + "26 4 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
48interior_honda_accord_2008I love the new body style and the interior is a simple pleasure except for the center dash .\\n0 ...4
26interior_toyota_camry_2007First of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n0 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windsh...4
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"document_df[document_df['cluster_label']==4]\",\n \"rows\": 2,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \"interior_toyota_camry_2007\",\n \"interior_honda_accord_2008\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 2,\n \"samples\": [\n \" First of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n0 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windshield .\\n1 Insanely cheap plastic all over interior .\\n2 Disappointed in interior and exterior quality .\\n3 I love the color of the exterior and interior .\\n4 This car is nearly perfect when compared to other cars in this class regarding interior dimensions, visibility, exterior styling, etc .\\n5 Several parts in the interior rattle including the sunroof and some parts of the dash, the radio randomly will eject CDs, etc .\\n6 The interior is roomy, the ride is smooth and solid and yet it has excellent gas mileage .\\n7 The interior looks good but feels cheap compared to my 1997 LE camry .\\n8 The interior is large, the controls are well placed and simple .\\n9 Interior noise level is unacceptable , this is one noisy car on the freeway .\\n10 I love the exterior, but the interior is nothing to brag about .\\n11 The interior could use some work to make it not so cheap and plastic looking .\\n12 The biggest complaints are the softness of the seat, the super cheap interior dash plastic and the location of the door pulls, they render the door arm rests useless .\\n13 The interior looks great to me .\\n14 This interior is as good or better than others in it's class .\\n15 The interior is stylish, roomy and has many nice features .\\n16 5 Poor craftsmanship on interior .\\n17 Cheapened interior materials, flimsy steering wheel switch gear, less padding in seats, only a 2, way power passenger seat, plastic covered board for seat, back map pockets, baby, puke yellow fake wood trim, etc .\\n18 , all combine to paint a less than luxerious interior .\\n19 Only thing would like to see is that the interior be made more available in the darker in the SE .\\n20 I love everything about my Camry, except for the interior looks, very cheap and the non alloy rims are very cheesy or cheap .\\n21 The car also does not allow fresh air through the vents if the AC isn't on, the interior becomes very warm, very quickly .\\n22 Looks are great and interior is comfortable, but it ?\\n23 Even the interior has not held up along with the awful wind noise at highway speeds .\\n24 The controls were installed without a problem no cutting of interior plastic, the knee airbag was bypassed .\\n25 Interior looks OK but is built a little cheap .\\n26 The interior is so very quiet, you must compare this car to a Cadillac .\\n27 The interior is very luxurious and comfortable, however the car feels slower than my 2002 Camry LE .\\n28 I like the looks and interior but as described in some of the other reviews it has a hesitation problem when you slow down or brake, and then get back on the throttle .\\n29 Also, the sound system is so poor unless you are willing to spend $3K more to get the JBL and leather interior, which come together .\\n30 Interior quality is very poor .\\n31 Fit and finish are exquisite, the interior is extremely well designed, looks good, fun to drive .\\n32 Sound system is excellent and interior was adequate but the room is awesome !\\n33 The interior feels that of a Lexus or BMW and the exterior is an eye catcher .\\n34 I love its Avalon like roomy interior and great looks .\\n35 I love the interior lighting .\\n36 The exterior and interior are nice .\\n37 Like the looks and styling, both interior and exterior .\\n38 Interior exterior quality is very good .\\n39 3 It is a good interior and exterior design and should be copied by other car makers, but the MPG for the 2 .\\n40 Very low interior noise level, which adds to the long trip comfort .\\n41 The styling does not say Camry anymore and the interior is mostly excellent , door handles are too hard and plasticky, some rattles especially when cold outside, not overly fond of the center console design .\\n42 The Camry has a ton of style and lots of interior room without being to bulky on the outside .\\n43 It serves the purpose in which I bought it, and I really do like the roomy interior and the new styling, but there really is no fun factor to it .\\n44 Horrible quality of interior .\\n45 After driving it a few days, the interior squeaking and rubbing noises increased so much that I drove to Toyota and had the body shop manager check to see if it had been in a major accident .\\n46 The interior is very roomy and spacious and Toyota has given some nice standard features in LE .\\n47 The interior design is excellent .\\n48 Interior is very nice and quiet .\\n49 Very comfortable, quiet interior .\\n50 New interior is very pleasing to the eye and am happy to have features like tire pressure indicator, side airbags, 4 wheel disc brakes and 16 inch wheels included as standard .\\n51 Feels expensive, yet comfortable with larger interior than my Grand Prix .\\n52 I love the body style and the interior .\\n53 Exterior reminds me of a 530i and the interior is plush especially with the light woodgrain finish .\\n54 The interior is on par with other cars in its class, but not up to the fit and finish of previous Camrys .\\n55 Examples include fit and finish had to have the drivers door realigned due to metal, to, metal contact causing terrible rattling , poor fit of interior parts, which causes a lot of rattling, especially when it's cold out the auto tranny has a history of serious problems and acts weird, and lastly the paint quality, which chips very easily .\\n56 The interior is top notch and the navigation system is very intuitive .\\n57 Customizable features which don't require dealer help like some brands auto lock modes, interior light modes, etc .\\n58 Interior is simple and well laid out .\\n59 The blue neon center console makes the interior look really cool, every single person that's been in my car loved it .\\n60 The interior is extremely comfortable, and spacious .\\n61 I love the lighting on the radio controls, and the material on the interior, very soft and stylish .\\n62 Interior is very nice and much improved .\\n63 Practicality, good interior space, easy to get in and out of including putting an infant in a car seat .\\n64 Interior materials are far better than my old Mazda and V6 power is nuts .\\n65 I get positive comments each day on the exterior interior design .\\n66 I bought this car smitten by its exterior look and interior comfort .\\n67 The interior is classy, the standard MP3 is useful, the host of curtain bags and standard features add to the plus .\\n68 The new design is very aggressive on Toyota's part and the interior design is very contemporary .\\n69 The ride is quieter, the car faster, the exterior and interior looks better .\\n70 The interior is nice and roomy and the exterior design is beautiful .\\n71 Great ride, engine, interior, gas mileage .\\n72 It shifts hard, has a lot of play in steering, has quite a few blind spots & the interior is cheap plastic which scratches very easy .\\n73 The sunroof actually comes down and slides between the exterior and interior thus minmizing wind noise at speed .\\n74 The leather interior is worth the money .\\n75 Luxurious interior, great MP3 player addition .\\n76 The interior is fairly pleasant but suffers from too much hard plastic and some poor fits !\\n77 The interior is very quiet at highway speeds .\\n78 The cloth interior is great and the 4 cylinder has tons of power for such a small engine .\\n79 On top of that some interior trim pieces didn't match and one fell off !\\n80 Smooth and responsive interior is as luxurious as you can get without slapping an L on the grill .\\n81 The first one was returned to the dealer, on the day of delivery, because of excessive rattling noises coming from the interior, especially the back right side of the car .\\n82 The ride is refined, steering is tight, plenty of interior space, the exterior design is refreshing to look at .\\n83 My only complaint with the interior is the color of the fake wood :\\n84 The interior is much more comfortable than my last 3 Camrys and the exterior styling is oh so chic .\\n85 IMHO, the exterior and performance are way better than other trims, though you can't compare interior of SE with XLE .\\n86 Interior is extremely quiet on the hiway .\\n87 Love the looks, power, roomy interior, good mileage at 32 hwy and 25 city .\\n88 Interior still has too much hard plastic, especially the steering wheel, which has a raised crease hitting on the fingers as a constant reminder .\\n89 It has nice luxury interior , but it also has nice pick up speed and is very roomy .\\n90 I like the wood grain accents with the tan colored interior but I don't think is looks as good with the gray interior .\\n91 Excellent interior build quality .\\n92 The new interior design is ok to me, the blue, backgound center console is a little bit awkward, too bright at night .\\n93 Ash leather interior with light yellow fake wood trim is just ok design .\\n94 Leather interior very comfortable .\\n95 The interior is upgraded markedly, and although there is a bit less headroom, the added telescoping feature of the steering wheel combined with the greater travel of the seat yields greater comfort .\\n96 Nice looking interior but seats are very hard and are not comfortable for long trips .\\n97 There are so many interior improvements and well as engineering improvements .\\n98 I am in, love with my moonroof, 440 watt 6, disc stereo system, and the interior gauges that illuminates in blue is probably my favorite .\\n99 This is my second Camry and I like it, especially the art decoish design and simplicity of interior controls .\\n100 My Barcelona red metallic exterior and dark charcoal interior are a perfect combination .\\n101 Top notch rating on interior comfort .\\n102 All around this car is amazing, its sleek exterior and futuristic interior is sure to turn some heads .\\n103 Second, the interior designer should be fired .\\n104 It is surprising how spacious the interior is on a long trip .\\n105 The plastic interior looks and feels cheap .\\n106 The interior is okay and I have not had any rattles or squeaks .\\n107 The interior rattles, with pieces falling off, the ride is not that great, and the handling of the vehicle is absolutely the worst I have ever experienced .\",\n \" I love the new body style and the interior is a simple pleasure except for the center dash .\\n0 However, there are a couple of things that kill it for me 1 terrible driver seat comfort, kills my back 2 lack luster interior design, my Acadia has much better comfort 3 the VCM drives me crazy because the constant change in cylinder use is perceptible enough to be an annoyance .\\n1 Love the interior and the power and speed, but not hard to beat after what I had .\\n2 Love the interior and exterior look, the V6 is sensational, and getting compliments on the steel metallic color as if it's a Lexus or BMW .\\n3 The seats are decent, the interior design is excellent IMO as well as the exterior design, and thus far it has been extremely reliable .\\n4 The interior quality is OK, my 1999 Accord EX had a better comfort level on the seats .\\n5 The interior design was much nicer .\\n6 The interior is nicely equipped and I like the XM radio but not the monthly fee .\\n7 The new styling is very upscale, and the interior layout is also impressive and spacious inside .\\n8 My only reservations are the ivory cloth interior's durability had to have taffeta white !\\n9 nice car, add'l $$ for premium gas, not as big of interior as accord, dealer that we would utilize for service not clean .\\n10 I don't like the dash radio assembly, but the interior has a luxury look .\\n11 Only needs to add drivers seat memory, 2, tone perforated leather, xenons, rear seat interior illumination mounted under front seats, and better tilt .\\n12 Biggest plus I think is the roominess of the interior and the trunk .\\n13 The ride is very good The interior is awesome .\\n14 My car is taffeta white and i wish there was another interior color option other than ivory !\\n15 However after checking out the '09 Camry, I was disappointed with the quality of the interior and outdated dash .\\n16 I like the interior space, dash, board, and a very functional cabin .\\n17 I have the diamond white pearl which is awesome with the tan interior .\\n18 Fun to drive, lots of power, smooth and a great interior .\\n19 The interior room is enormous .\\n20 The interior was boring and felt like a 5 year old design .\\n21 Interior very high end, exterior very upscale look .\\n22 Interior and exterior design is attention getting .\\n23 The interior is laid out great,appreciate the large screen, touch controls on the steering wheel .\\n24 The interior and exterior are nice .\\n25 Great amount of interior space, excellent design, the 190 hp engine takes off faster that I could have possibly hoped for who needs a V6 ?\\n26 I hate to admit that they have loud interiors .\\n27 The exterior and interior is more reflective of European styling and it looks amazing .\\n28 The interior is huge and the exterior is super sleek .\\n29 The interior has loud vibrating squeaking rattles coming from the glove box .\\n30 Still enjoy interior and exterior styling as well as overall performance and handling .\\n31 The interior is really noisy unless the road surface is smooth .\\n32 Yes, it is roomy, has a nice interior, silky smooth engine, good transmission and direct steering .\\n33 From the hard and uncomfortable driver seat, excessive body roll, several rattles in the interior and intrusive road noise, the vehicle just does not strike a chord n .\\n34 The Accord's interior look and feel great .\\n35 Interior is superb, exterior is very stylish .\\n36 The new body style looks great, and the interior is laid out very well .\\n37 User friendly interior design .\\n38 I got the dark blue Accord with simonize paint and interior .\\n39 The car has a 268 hp engine which provides plenty of power for passing and yet the car gets 31 to 33 mpg the interior of the car is well laid out and the controls and gauges are easy to read and handle the fit and finish of the car is flawless a well built car the exterior design is smooth and flowing well done without excessive curves and as usual the Honda reliability remains its strong point I love driving this car I hate to get out of it at days end this is the first Honda I've purchased ill never drive anything other than a Honda again\\n40 Excellent pickup and great interior .\\n41 Most of the interior layout has been carefully thought out .\\n42 , > Impressed by the headlamps and the interior layout .\\n43 The black leather seats feel a bit hot on the back in the warm weather but otherwise no complaints about the interior .\\n44 The interior design is roomy and very comfortable .\\n45 Interior is very roomy, and I can sit comfortably in the rear seat at 6'2 .\\n46 Good trunk space, nice finish and materials in both the interior and exterior .\\n47 Solid build, comfortable interior, smooth ride, fuel efficient averaging 27 .\\n48 The interior and exterior are nice .\\n49 I previously owned a Chrysler 300 2006, so it is difficult going from a real comfortable interior, really massive dash to a bland and old fashioned interior .\\n50 Great interior room, Great safety features, and a great deal .\\n51 Everything is extremely well engineered and designed from the interior to the exterior to the engine compartment, etc .\\n52 Nicer interior than the Mercedes C300's we looked at .\\n53 I completely disagree with experts saying that the new Honda Accord's interior is of good quality .\\n54 Handles great, awesome fresh interior, lots of cool new features .\\n55 I love the amount of interior room of this car .\\n56 Great ride , roomy interior, legendary Honda reliability .\\n57 Eye, catching appeal fit and finish exterior interior safety features laudable audio system good esp w XM radio interior room spacious 3 .\\n58 Finally in November the dealer traded for a car just like the one I wanted except it had a different color interior .\\n59 Awesome interior with great comfort .\\n60 The new body styling is a big plus and the interior has the look of a more expensive vehicle .\\n61 The interior is tight and well put together .\\n62 High Honda quality interior materials, great stereo, and loaded with every option you could think of .\\n63 The interior is luxurious and large .\\n64 Interior is nice but not as comfortable as past Accords and feels a little cheap .\\n65 I am extremely satisfied after the first week though it was more costly, I still like the smooth power and handling of the V, 6, the comfort of the leather interior, and something new for me .\\n66 The interior design and the performance of the V6 are the highlights .\\n67 The interior room is plentiful .\\n68 Almost the entire interior of the car can be controlled by voice commands such as temp .\\n69 Black leather interior is very classy and plastic trim is nice .\\n70 The interior is plenty spacious and once I mastered all the controls and settings, they were easy enough to operate .\\n71 The interior is very similar to that of the TL, but for about $7k less .\\n72 I did not like the interior door moldings that covered the door controls .\\n73 Wish the colors were better with matched with the interior and exterior colors offered .\\n74 From the overall exterior styling, the leather interior, dashboard, moon roof, engine, wheels, tires, and even the trunk you get nothing less than quality .\\n75 The interior is comfortable, neat and you can find everything within reach .\\n76 The interior is roomy, exterior is definitely better than BMW 3 series .\\n77 Although it's a lower trim level, it has high quality interior trim very comfortable seats and and very smooth, quiet ride .\\n78 The interior and exterior look great !\\n79 I love the interior layout and comfort .\\n80 I previously had a '01 Acura CL Type, S and the ride is similar interior design not all that much different than the TL and on the EX, L you get most of the same options plus the added roominess in the '08 helps w a family .\\n81 Was able to get a Polished Metal w Gray interior right off the truck .\\n82 Center instrument panel hard to read in bright daylight Was looking at new Nissan Coupe also, but purchased Honda because of larger interior .\\n83 I commute alot, so interior is important to me, and its leather is does not seem cheap and comfort is top notch .\\n84 Interior is very comfortable w ergonomic design in mind .\\n85 While driving on the interstate with the window down, the wind makes an annoying sound as it bounce against the interior of the car .\\n86 Purchased Accord Feb 2008 V6 EX Cloth interior .\\n87 I find the interior comfortable for short and long trips .\\n88 Tonight I find that my headlights, brake lights, and interior lights all flicker every 20 seconds when the air conditioner is running .\\n89 Interior is good but has quite a few rattles .\\n90 I am a bit disappointed with the interior planning .\\n91 At highway speeds, the interior remains quiet, with little to no wind or road noise .\\n92 However I have few complaints about the interior .\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 1,\n \"samples\": [\n 4\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 16 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Cluster #5는 호텔 세부요소(음식, 스태프 등)에 대해 군집화됨" + ], + "metadata": { + "id": "3_k0um6MhFZ_" + } + }, + { + "cell_type": "markdown", + "source": [ + "3개 그룹으로 군집화하기" + ], + "metadata": { + "id": "U0Unl4w9hMKp" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.cluster import KMeans\n", + "\n", + "# 3개 집합으로 군집화\n", + "km_cluster = KMeans(n_clusters=3, max_iter=10000, random_state=0)\n", + "km_cluster.fit(feature_vect)\n", + "cluster_label = km_cluster.labels_\n", + "\n", + "# 소속 클러스터를 cluster_label 칼럼으로 할당하고 cluster_label 값으로 정렬\n", + "document_df['cluster_label'] = cluster_label\n", + "document_df.sort_values(by='cluster_label')" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 1000 + }, + "id": "1yaOnrpPhPqV", + "outputId": "765be3ec-90ec-4784-916e-57e6d3aa140e" + }, + "execution_count": 17, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " filename \\\n", + "0 fonts_amazon_kindle \n", + "1 features_windows7 \n", + "2 speed_garmin_nuvi_255W_gps \n", + "3 updates_garmin_nuvi_255W_gps \n", + "6 directions_garmin_nuvi_255W_gps \n", + "11 buttons_amazon_kindle \n", + "10 screen_ipod_nano_8gb \n", + "8 satellite_garmin_nuvi_255W_gps \n", + "25 video_ipod_nano_8gb \n", + "21 battery-life_ipod_nano_8gb \n", + "31 speed_windows7 \n", + "27 size_asus_netbook_1005ha \n", + "18 screen_netbook_1005ha \n", + "16 battery-life_amazon_kindle \n", + "34 performance_netbook_1005ha \n", + "32 accuracy_garmin_nuvi_255W_gps \n", + "40 screen_garmin_nuvi_255W_gps \n", + "41 sound_ipod_nano_8gb \n", + "42 voice_garmin_nuvi_255W_gps \n", + "39 eyesight-issues_amazon_kindle \n", + "37 battery-life_netbook_1005ha \n", + "49 price_amazon_kindle \n", + "43 keyboard_netbook_1005ha \n", + "44 display_garmin_nuvi_255W_gps \n", + "38 navigation_amazon_kindle \n", + "29 staff_bestwestern_hotel_sfo \n", + "14 food_holiday_inn_london \n", + "12 food_swissotel_chicago \n", + "9 service_swissotel_hotel_chicago \n", + "28 service_bestwestern_hotel_sfo \n", + "7 room_holiday_inn_london \n", + "5 parking_bestwestern_hotel_sfo \n", + "20 location_holiday_inn_london \n", + "22 rooms_swissotel_chicago \n", + "4 bathroom_bestwestern_hotel_sfo \n", + "35 staff_swissotel_chicago \n", + "46 free_bestwestern_hotel_sfo \n", + "47 price_holiday_inn_london \n", + "50 rooms_bestwestern_hotel_sfo \n", + "24 service_holiday_inn_london \n", + "45 location_bestwestern_hotel_sfo \n", + "30 quality_toyota_camry_2007 \n", + "19 seats_honda_accord_2008 \n", + "26 interior_toyota_camry_2007 \n", + "17 comfort_toyota_camry_2007 \n", + "15 transmission_toyota_camry_2007 \n", + "13 comfort_honda_accord_2008 \n", + "23 performance_honda_accord_2008 \n", + "33 gas_mileage_toyota_camry_2007 \n", + "36 mileage_honda_accord_2008 \n", + "48 interior_honda_accord_2008 \n", + "\n", + " opinion_text \\\n", + "0 Being able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ... \n", + "1 I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ... \n", + "2 Another feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ... \n", + "3 Another thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe... \n", + "6 You also get upscale features like spoken directions including street names and programmable POIs .\\n0 I used to hesitate to go out of my directions but no... \n", + "11 I thought it would be fitting to christen my Kindle with the Stephen King novella UR, so went to the Amazon site on my computer and clicked on the button to buy it .\\n0 As soon as I'd clicked the button to confirm my order it appeared on my Kindle almost immediately !\\n1 ... \n", + "10 As always, the video screen is sharp and bright .\\n0 2, inch screen and a glossy, polished aluminum finish that one CNET editor described as looking like a Christmas tree ornament .\\n1 ... \n", + "8 It's fast to acquire satellites .\\n0 If you've ever had a Brand X GPS take you on some strange route that adds 20 minutes to your trip, has you turn the wrong way down a one way road, tell you to turn AFTER you've passed the street, frequently loses the satellite signal, or has old maps missing streets, you know how important this stuff is .\\n1 ... \n", + "25 I bought the 8, gig Ipod Nano that has the built, in video camera .\\n0 Itunes has an on, line store, where you may purchase and download music and videos which will install onto the ipod .\\n1 ... \n", + "21 short battery life I moved up from an 8gb .\\n0 I love this ipod except for the battery life .\\n1 ... \n", + "31 Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n0 , faster about 20% to 30% faster at running applications than my Vista , seriously\\n1 ... \n", + "27 A few other things I'd like to point out is that you must push the micro, sized right angle end of the ac adapter until it snaps in place or the battery may not charge .\\n0 The full size right shift k... \n", + "18 Keep in mind that once you get in a room full of light or step outdoors screen reflections could become annoying .\\n0 I've used mine outsi... \n", + "16 After I plugged it in to my USB hub on my computer to charge the battery the charging cord design is very clever !\\n0 After you have paged tru a 500, page book one, page, at, a, time to get from Chapter 2 to Chapter 15, see how excited you are about a low battery and all the time it took to get there !\\n1 ... \n", + "34 The Eee Super Hybrid Engine utility lets users overclock or underclock their Eee PC's to boost performance or provide better battery life depending on their immediate requirements .\\n0 In Super Performance mode CPU, Z shows the bus speed to increase up to 169 .\\n1 One... \n", + "32 , and is very, very accurate .\\n0 but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n1 This functi... \n", + "40 It is easy to read and when touching the screen it works great !\\n0 and zoom out buttons on the 255w to the same side of the screen which makes it a bit easier .\\n1 ... \n", + "41 headphone jack i got a clear case for it and it i got a clear case for it and it like prvents me from being able to put the jack all the way in so the sound can b messsed up or i can get it in there and its playing well them go to move or something and it slides out .\\n0 Picture and sound quality are excellent for this typ of devic .\\n1 ... \n", + "42 The voice prompts and maps are wonderful especially when driving after dark .\\n0 I also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n1 ... \n", + "39 It feels as easy to read as the K1 but doesn't seem any crisper to my eyes .\\n0 the white is really GREY, and to avoid considerable eye, strain I had to refresh pages every other page .\\n1 The dream has always been a portable electronic device that could hold a ton of reading material, automate subscriptions and fa... \n", + "37 6GHz 533FSB cpu, glossy display, 3, Cell 23Wh Li, ion Battery , and a 1 .\\n0 Not to mention that as of now... \n", + "49 If a case was included, as with the Kindle 1, that would have been reflected in a higher price .\\n0 lower overall price, with nice leather cover .\\n1 ... \n", + "43 , I think the new keyboard rivals the great hp mini keyboards .\\n0 Since the battery life difference is minimum, the only reason to upgrade would be to get the better keyboard .\\n1 The keyboard is now as good as t... \n", + "44 3 quot widescreen display was a bonus .\\n0 This made for smoother graphics on the 255w of the vehicle moving along displayed roads, where the 750's display was more of a jerky movement .\\n1 ... \n", + "38 In fact, the entire navigation structure has been completely revised , I'm still getting used to it but it's a huge step forward .\\n0 ... \n", + "29 Staff are friendl... \n", + "14 The room was packed to capacity with queues at the food buffets .\\n0 The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n1 ... \n", + "12 The food for our event was delicious .\\n0 ... \n", + "9 Mediocre room and service for a very extravagant price .\\n0 ... \n", + "28 Both of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n0 The service was good, very friendly staff and we loved the free wine reception each night .\\n1 ... \n", + "7 We arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave u... \n", + "5 Parking was expensive but I think this is common for San Fran .\\n0 there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n1 ... \n", + "20 Great location for tube and we crammed in a fair amount of sightseeing in a short time .\\n0 All in all, a normal chain hotel on a nice lo... \n", + "22 The Swissotel is one of our favorite hotels in Chicago and the corner rooms have the most fantastic views in the city .\\n0 The rooms look like they were just remodled and upgraded, there was an HD TV and a nice iHome docking station to put my iPod so I could set the alarm to wake up with my music instead of the radio .\\n1 ... \n", + "4 The room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ... \n", + "35 The staff at Swissotel were not particularly nice .\\n0 Each time I waited at the counter for staff for several minutes and then was waved to the desk upon my turn with no hello or anything, or apology for waiting in line .\\n1 ... \n", + "46 The wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n0 They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n1 ... \n", + "47 All in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\n0 ... \n", + "50 Great Location , Nice Rooms , H... \n", + "24 not customer, oriented hotelvery low service levelboor reception\\n0 The room was quiet, clean, the bed and pillows were comfortable, and the serv... \n", + "45 Good Value good location , ideal choice .\\n0 Great Location , Nice Rooms , Helpless Concierge\\n1 ... \n", + "30 I previously owned a Toyota 4Runner which had incredible build quality and reliability .\\n0 I bought the Camry because of Toyota reliability and qua... \n", + "19 Front seats are very uncomfortable .\\n0 No memory seats, no trip computer, can only display outside temp with trip odometer .\\n1 ... \n", + "26 First of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n0 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windsh... \n", + "17 Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n1 Great gas mileage and comfortable on long trips ... \n", + "15 After slowing down, transmission has to be kicked to speed up .\\n0 ... \n", + "13 Drivers seat not comfortable, the car itself compared to other models of similar class .\\n0 ... \n", + "23 Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n0 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n1 Overall performance is good but comfort level is poor .\\n2 ... \n", + "33 Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 ... \n", + "36 It's quiet, get good gas mileage and looks clean inside and out .\\n0 The mileage is great, and I've had to get used to stopping less for gas .\\n1 Thought gas ... \n", + "48 I love the new body style and the interior is a simple pleasure except for the center dash .\\n0 ... \n", + "\n", + " cluster_label \n", + "0 0 \n", + "1 0 \n", + "2 0 \n", + "3 0 \n", + "6 0 \n", + "11 0 \n", + "10 0 \n", + "8 0 \n", + "25 0 \n", + "21 0 \n", + "31 0 \n", + "27 0 \n", + "18 0 \n", + "16 0 \n", + "34 0 \n", + "32 0 \n", + "40 0 \n", + "41 0 \n", + "42 0 \n", + "39 0 \n", + "37 0 \n", + "49 0 \n", + "43 0 \n", + "44 0 \n", + "38 0 \n", + "29 1 \n", + "14 1 \n", + "12 1 \n", + "9 1 \n", + "28 1 \n", + "7 1 \n", + "5 1 \n", + "20 1 \n", + "22 1 \n", + "4 1 \n", + "35 1 \n", + "46 1 \n", + "47 1 \n", + "50 1 \n", + "24 1 \n", + "45 1 \n", + "30 2 \n", + "19 2 \n", + "26 2 \n", + "17 2 \n", + "15 2 \n", + "13 2 \n", + "23 2 \n", + "33 2 \n", + "36 2 \n", + "48 2 " + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
filenameopinion_textcluster_label
0fonts_amazon_kindleBeing able to change the font sizes is awesome !\\n0 For whatever reason, Amazon decided to make the Font on the Home Screen ...0
1features_windows7I had to uninstall anti, virus and selected other programs, some of which did not have listings in the Programs and Features Control Panel section .\\n0 This review briefly touches upon some of the key features and enhancements of Microsoft's latest OS .\\n1 ...0
2speed_garmin_nuvi_255W_gpsAnother feature on the 255w is a display of the posted speed limit on the road which you are currently on right above your current displayed speed .\\n0 I found myself not even looking at my car speedometer as I could easily see my current speed and the speed limit of my route at a glance .\\n1 ...0
3updates_garmin_nuvi_255W_gpsAnother thing to consider was that I paid $50 less for the 750 and it came with the FM transmitter cable and a USB cord to connect it to your computer for updates and downloads .\\n0 update and reroute much _more_ quickly than my other GPS .\\n1 UPDATE ON THIS , It finally turned out that to see the elevation contours at lowe...0
6directions_garmin_nuvi_255W_gpsYou also get upscale features like spoken directions including street names and programmable POIs .\\n0 I used to hesitate to go out of my directions but no...0
11buttons_amazon_kindleI thought it would be fitting to christen my Kindle with the Stephen King novella UR, so went to the Amazon site on my computer and clicked on the button to buy it .\\n0 As soon as I'd clicked the button to confirm my order it appeared on my Kindle almost immediately !\\n1 ...0
10screen_ipod_nano_8gbAs always, the video screen is sharp and bright .\\n0 2, inch screen and a glossy, polished aluminum finish that one CNET editor described as looking like a Christmas tree ornament .\\n1 ...0
8satellite_garmin_nuvi_255W_gpsIt's fast to acquire satellites .\\n0 If you've ever had a Brand X GPS take you on some strange route that adds 20 minutes to your trip, has you turn the wrong way down a one way road, tell you to turn AFTER you've passed the street, frequently loses the satellite signal, or has old maps missing streets, you know how important this stuff is .\\n1 ...0
25video_ipod_nano_8gbI bought the 8, gig Ipod Nano that has the built, in video camera .\\n0 Itunes has an on, line store, where you may purchase and download music and videos which will install onto the ipod .\\n1 ...0
21battery-life_ipod_nano_8gbshort battery life I moved up from an 8gb .\\n0 I love this ipod except for the battery life .\\n1 ...0
31speed_windows7Windows 7 is quite simply faster, more stable, boots faster, goes to sleep faster, comes back from sleep faster, manages your files better and on top of that it's beautiful to look at and easy to use .\\n0 , faster about 20% to 30% faster at running applications than my Vista , seriously\\n1 ...0
27size_asus_netbook_1005haA few other things I'd like to point out is that you must push the micro, sized right angle end of the ac adapter until it snaps in place or the battery may not charge .\\n0 The full size right shift k...0
18screen_netbook_1005haKeep in mind that once you get in a room full of light or step outdoors screen reflections could become annoying .\\n0 I've used mine outsi...0
16battery-life_amazon_kindleAfter I plugged it in to my USB hub on my computer to charge the battery the charging cord design is very clever !\\n0 After you have paged tru a 500, page book one, page, at, a, time to get from Chapter 2 to Chapter 15, see how excited you are about a low battery and all the time it took to get there !\\n1 ...0
34performance_netbook_1005haThe Eee Super Hybrid Engine utility lets users overclock or underclock their Eee PC's to boost performance or provide better battery life depending on their immediate requirements .\\n0 In Super Performance mode CPU, Z shows the bus speed to increase up to 169 .\\n1 One...0
32accuracy_garmin_nuvi_255W_gps, and is very, very accurate .\\n0 but for the most part, we find that the Garmin software provides accurate directions, whereever we intend to go .\\n1 This functi...0
40screen_garmin_nuvi_255W_gpsIt is easy to read and when touching the screen it works great !\\n0 and zoom out buttons on the 255w to the same side of the screen which makes it a bit easier .\\n1 ...0
41sound_ipod_nano_8gbheadphone jack i got a clear case for it and it i got a clear case for it and it like prvents me from being able to put the jack all the way in so the sound can b messsed up or i can get it in there and its playing well them go to move or something and it slides out .\\n0 Picture and sound quality are excellent for this typ of devic .\\n1 ...0
42voice_garmin_nuvi_255W_gpsThe voice prompts and maps are wonderful especially when driving after dark .\\n0 I also thought the the voice prompts of the 750 where more pleasant sounding than the 255w's .\\n1 ...0
39eyesight-issues_amazon_kindleIt feels as easy to read as the K1 but doesn't seem any crisper to my eyes .\\n0 the white is really GREY, and to avoid considerable eye, strain I had to refresh pages every other page .\\n1 The dream has always been a portable electronic device that could hold a ton of reading material, automate subscriptions and fa...0
37battery-life_netbook_1005ha6GHz 533FSB cpu, glossy display, 3, Cell 23Wh Li, ion Battery , and a 1 .\\n0 Not to mention that as of now...0
49price_amazon_kindleIf a case was included, as with the Kindle 1, that would have been reflected in a higher price .\\n0 lower overall price, with nice leather cover .\\n1 ...0
43keyboard_netbook_1005ha, I think the new keyboard rivals the great hp mini keyboards .\\n0 Since the battery life difference is minimum, the only reason to upgrade would be to get the better keyboard .\\n1 The keyboard is now as good as t...0
44display_garmin_nuvi_255W_gps3 quot widescreen display was a bonus .\\n0 This made for smoother graphics on the 255w of the vehicle moving along displayed roads, where the 750's display was more of a jerky movement .\\n1 ...0
38navigation_amazon_kindleIn fact, the entire navigation structure has been completely revised , I'm still getting used to it but it's a huge step forward .\\n0 ...0
29staff_bestwestern_hotel_sfoStaff are friendl...1
14food_holiday_inn_londonThe room was packed to capacity with queues at the food buffets .\\n0 The over zealous staff cleared our unfinished drinks while we were collecting cooked food and movement around the room with plates was difficult in the crowded circumstances .\\n1 ...1
12food_swissotel_chicagoThe food for our event was delicious .\\n0 ...1
9service_swissotel_hotel_chicagoMediocre room and service for a very extravagant price .\\n0 ...1
28service_bestwestern_hotel_sfoBoth of us having worked in tourism for over 14 years were very disappointed at the level of service provided by this gentleman .\\n0 The service was good, very friendly staff and we loved the free wine reception each night .\\n1 ...1
7room_holiday_inn_londonWe arrived at 23,30 hours and they could not recommend a restaurant so we decided to go to Tesco, with very limited choices but when you are hingry you do not careNext day they rang the bell at 8,00 hours to clean the room, not being very nice being waken up so earlyEvery day they gave u...1
5parking_bestwestern_hotel_sfoParking was expensive but I think this is common for San Fran .\\n0 there is a fee for parking but well worth it seeing no where to park if you do have a car .\\n1 ...1
20location_holiday_inn_londonGreat location for tube and we crammed in a fair amount of sightseeing in a short time .\\n0 All in all, a normal chain hotel on a nice lo...1
22rooms_swissotel_chicagoThe Swissotel is one of our favorite hotels in Chicago and the corner rooms have the most fantastic views in the city .\\n0 The rooms look like they were just remodled and upgraded, there was an HD TV and a nice iHome docking station to put my iPod so I could set the alarm to wake up with my music instead of the radio .\\n1 ...1
4bathroom_bestwestern_hotel_sfoThe room was not overly big, but clean and very comfortable beds, a great shower and very clean bathrooms .\\n0 The second room was smaller, with a very inconvenient bathroom layout, but at least it was quieter and we were able to sleep .\\n1 ...1
35staff_swissotel_chicagoThe staff at Swissotel were not particularly nice .\\n0 Each time I waited at the counter for staff for several minutes and then was waved to the desk upon my turn with no hello or anything, or apology for waiting in line .\\n1 ...1
46free_bestwestern_hotel_sfoThe wine reception is a great idea as it is nice to meet other travellers and great having access to the free Internet access in our room .\\n0 They also have a computer available with free internet which is a nice bonus but I didn't find that out till the day before we left but was still able to get on there to check our flight to Vegas the next day .\\n1 ...1
47price_holiday_inn_londonAll in all, a normal chain hotel on a nice location , I will be back if I do not find anthing closer to Picadilly for a better price .\\n0 ...1
50rooms_bestwestern_hotel_sfoGreat Location , Nice Rooms , H...1
24service_holiday_inn_londonnot customer, oriented hotelvery low service levelboor reception\\n0 The room was quiet, clean, the bed and pillows were comfortable, and the serv...1
45location_bestwestern_hotel_sfoGood Value good location , ideal choice .\\n0 Great Location , Nice Rooms , Helpless Concierge\\n1 ...1
30quality_toyota_camry_2007I previously owned a Toyota 4Runner which had incredible build quality and reliability .\\n0 I bought the Camry because of Toyota reliability and qua...2
19seats_honda_accord_2008Front seats are very uncomfortable .\\n0 No memory seats, no trip computer, can only display outside temp with trip odometer .\\n1 ...2
26interior_toyota_camry_2007First of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n0 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windsh...2
17comfort_toyota_camry_2007Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 Seats are fine, in fact of all the smaller sedans this is the most comfortable I found for the price as I am 6', 2 and 250# .\\n1 Great gas mileage and comfortable on long trips ...2
15transmission_toyota_camry_2007After slowing down, transmission has to be kicked to speed up .\\n0 ...2
13comfort_honda_accord_2008Drivers seat not comfortable, the car itself compared to other models of similar class .\\n0 ...2
23performance_honda_accord_2008Very happy with my 08 Accord, performance is quite adequate it has nice looks and is a great long, distance cruiser .\\n0 6, 4, 3 eco engine has poor performance and gas mileage of 22 highway .\\n1 Overall performance is good but comfort level is poor .\\n2 ...2
33gas_mileage_toyota_camry_2007Ride seems comfortable and gas mileage fairly good averaging 26 city and 30 open road .\\n0 ...2
36mileage_honda_accord_2008It's quiet, get good gas mileage and looks clean inside and out .\\n0 The mileage is great, and I've had to get used to stopping less for gas .\\n1 Thought gas ...2
48interior_honda_accord_2008I love the new body style and the interior is a simple pleasure except for the center dash .\\n0 ...2
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "summary": "{\n \"name\": \"document_df\",\n \"rows\": 51,\n \"fields\": [\n {\n \"column\": \"filename\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \"interior_toyota_camry_2007\",\n \"location_bestwestern_hotel_sfo\",\n \"comfort_honda_accord_2008\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"opinion_text\",\n \"properties\": {\n \"dtype\": \"string\",\n \"num_unique_values\": 51,\n \"samples\": [\n \" First of all, the interior has way too many cheap plastic parts like the cheap plastic center piece that houses the clock .\\n0 3 blown struts at 30,000 miles, interior trim coming loose and rattling squeaking, stains on paint, and bug splats taking paint off, premature uneven brake wear, on 3rd windshield .\\n1 Insanely cheap plastic all over interior .\\n2 Disappointed in interior and exterior quality .\\n3 I love the color of the exterior and interior .\\n4 This car is nearly perfect when compared to other cars in this class regarding interior dimensions, visibility, exterior styling, etc .\\n5 Several parts in the interior rattle including the sunroof and some parts of the dash, the radio randomly will eject CDs, etc .\\n6 The interior is roomy, the ride is smooth and solid and yet it has excellent gas mileage .\\n7 The interior looks good but feels cheap compared to my 1997 LE camry .\\n8 The interior is large, the controls are well placed and simple .\\n9 Interior noise level is unacceptable , this is one noisy car on the freeway .\\n10 I love the exterior, but the interior is nothing to brag about .\\n11 The interior could use some work to make it not so cheap and plastic looking .\\n12 The biggest complaints are the softness of the seat, the super cheap interior dash plastic and the location of the door pulls, they render the door arm rests useless .\\n13 The interior looks great to me .\\n14 This interior is as good or better than others in it's class .\\n15 The interior is stylish, roomy and has many nice features .\\n16 5 Poor craftsmanship on interior .\\n17 Cheapened interior materials, flimsy steering wheel switch gear, less padding in seats, only a 2, way power passenger seat, plastic covered board for seat, back map pockets, baby, puke yellow fake wood trim, etc .\\n18 , all combine to paint a less than luxerious interior .\\n19 Only thing would like to see is that the interior be made more available in the darker in the SE .\\n20 I love everything about my Camry, except for the interior looks, very cheap and the non alloy rims are very cheesy or cheap .\\n21 The car also does not allow fresh air through the vents if the AC isn't on, the interior becomes very warm, very quickly .\\n22 Looks are great and interior is comfortable, but it ?\\n23 Even the interior has not held up along with the awful wind noise at highway speeds .\\n24 The controls were installed without a problem no cutting of interior plastic, the knee airbag was bypassed .\\n25 Interior looks OK but is built a little cheap .\\n26 The interior is so very quiet, you must compare this car to a Cadillac .\\n27 The interior is very luxurious and comfortable, however the car feels slower than my 2002 Camry LE .\\n28 I like the looks and interior but as described in some of the other reviews it has a hesitation problem when you slow down or brake, and then get back on the throttle .\\n29 Also, the sound system is so poor unless you are willing to spend $3K more to get the JBL and leather interior, which come together .\\n30 Interior quality is very poor .\\n31 Fit and finish are exquisite, the interior is extremely well designed, looks good, fun to drive .\\n32 Sound system is excellent and interior was adequate but the room is awesome !\\n33 The interior feels that of a Lexus or BMW and the exterior is an eye catcher .\\n34 I love its Avalon like roomy interior and great looks .\\n35 I love the interior lighting .\\n36 The exterior and interior are nice .\\n37 Like the looks and styling, both interior and exterior .\\n38 Interior exterior quality is very good .\\n39 3 It is a good interior and exterior design and should be copied by other car makers, but the MPG for the 2 .\\n40 Very low interior noise level, which adds to the long trip comfort .\\n41 The styling does not say Camry anymore and the interior is mostly excellent , door handles are too hard and plasticky, some rattles especially when cold outside, not overly fond of the center console design .\\n42 The Camry has a ton of style and lots of interior room without being to bulky on the outside .\\n43 It serves the purpose in which I bought it, and I really do like the roomy interior and the new styling, but there really is no fun factor to it .\\n44 Horrible quality of interior .\\n45 After driving it a few days, the interior squeaking and rubbing noises increased so much that I drove to Toyota and had the body shop manager check to see if it had been in a major accident .\\n46 The interior is very roomy and spacious and Toyota has given some nice standard features in LE .\\n47 The interior design is excellent .\\n48 Interior is very nice and quiet .\\n49 Very comfortable, quiet interior .\\n50 New interior is very pleasing to the eye and am happy to have features like tire pressure indicator, side airbags, 4 wheel disc brakes and 16 inch wheels included as standard .\\n51 Feels expensive, yet comfortable with larger interior than my Grand Prix .\\n52 I love the body style and the interior .\\n53 Exterior reminds me of a 530i and the interior is plush especially with the light woodgrain finish .\\n54 The interior is on par with other cars in its class, but not up to the fit and finish of previous Camrys .\\n55 Examples include fit and finish had to have the drivers door realigned due to metal, to, metal contact causing terrible rattling , poor fit of interior parts, which causes a lot of rattling, especially when it's cold out the auto tranny has a history of serious problems and acts weird, and lastly the paint quality, which chips very easily .\\n56 The interior is top notch and the navigation system is very intuitive .\\n57 Customizable features which don't require dealer help like some brands auto lock modes, interior light modes, etc .\\n58 Interior is simple and well laid out .\\n59 The blue neon center console makes the interior look really cool, every single person that's been in my car loved it .\\n60 The interior is extremely comfortable, and spacious .\\n61 I love the lighting on the radio controls, and the material on the interior, very soft and stylish .\\n62 Interior is very nice and much improved .\\n63 Practicality, good interior space, easy to get in and out of including putting an infant in a car seat .\\n64 Interior materials are far better than my old Mazda and V6 power is nuts .\\n65 I get positive comments each day on the exterior interior design .\\n66 I bought this car smitten by its exterior look and interior comfort .\\n67 The interior is classy, the standard MP3 is useful, the host of curtain bags and standard features add to the plus .\\n68 The new design is very aggressive on Toyota's part and the interior design is very contemporary .\\n69 The ride is quieter, the car faster, the exterior and interior looks better .\\n70 The interior is nice and roomy and the exterior design is beautiful .\\n71 Great ride, engine, interior, gas mileage .\\n72 It shifts hard, has a lot of play in steering, has quite a few blind spots & the interior is cheap plastic which scratches very easy .\\n73 The sunroof actually comes down and slides between the exterior and interior thus minmizing wind noise at speed .\\n74 The leather interior is worth the money .\\n75 Luxurious interior, great MP3 player addition .\\n76 The interior is fairly pleasant but suffers from too much hard plastic and some poor fits !\\n77 The interior is very quiet at highway speeds .\\n78 The cloth interior is great and the 4 cylinder has tons of power for such a small engine .\\n79 On top of that some interior trim pieces didn't match and one fell off !\\n80 Smooth and responsive interior is as luxurious as you can get without slapping an L on the grill .\\n81 The first one was returned to the dealer, on the day of delivery, because of excessive rattling noises coming from the interior, especially the back right side of the car .\\n82 The ride is refined, steering is tight, plenty of interior space, the exterior design is refreshing to look at .\\n83 My only complaint with the interior is the color of the fake wood :\\n84 The interior is much more comfortable than my last 3 Camrys and the exterior styling is oh so chic .\\n85 IMHO, the exterior and performance are way better than other trims, though you can't compare interior of SE with XLE .\\n86 Interior is extremely quiet on the hiway .\\n87 Love the looks, power, roomy interior, good mileage at 32 hwy and 25 city .\\n88 Interior still has too much hard plastic, especially the steering wheel, which has a raised crease hitting on the fingers as a constant reminder .\\n89 It has nice luxury interior , but it also has nice pick up speed and is very roomy .\\n90 I like the wood grain accents with the tan colored interior but I don't think is looks as good with the gray interior .\\n91 Excellent interior build quality .\\n92 The new interior design is ok to me, the blue, backgound center console is a little bit awkward, too bright at night .\\n93 Ash leather interior with light yellow fake wood trim is just ok design .\\n94 Leather interior very comfortable .\\n95 The interior is upgraded markedly, and although there is a bit less headroom, the added telescoping feature of the steering wheel combined with the greater travel of the seat yields greater comfort .\\n96 Nice looking interior but seats are very hard and are not comfortable for long trips .\\n97 There are so many interior improvements and well as engineering improvements .\\n98 I am in, love with my moonroof, 440 watt 6, disc stereo system, and the interior gauges that illuminates in blue is probably my favorite .\\n99 This is my second Camry and I like it, especially the art decoish design and simplicity of interior controls .\\n100 My Barcelona red metallic exterior and dark charcoal interior are a perfect combination .\\n101 Top notch rating on interior comfort .\\n102 All around this car is amazing, its sleek exterior and futuristic interior is sure to turn some heads .\\n103 Second, the interior designer should be fired .\\n104 It is surprising how spacious the interior is on a long trip .\\n105 The plastic interior looks and feels cheap .\\n106 The interior is okay and I have not had any rattles or squeaks .\\n107 The interior rattles, with pieces falling off, the ride is not that great, and the handling of the vehicle is absolutely the worst I have ever experienced .\",\n \" Good Value good location , ideal choice .\\n0 Great Location , Nice Rooms , Helpless Concierge\\n1 The location is good, and the overall decor is nice, but there was nothing that I can really rave about .\\n2 Overall, it was a good location, but an average hotel with serious noise issues .\\n3 A perfect hotel a perfect location perfect staff !\\n4 The location is perfect to pier 39 and surrounding areas .\\n5 My husband found this hotel on Trip Advisor and it ranked very high and we weren't disappointed at all as it is in a great location and a very nice hotel .\\n6 The hotel location was perfect .\\n7 My husband and I stayed for two nights at the Tuscan Inn and enjoyed it's great location to Fisherman Wharf and proximity to San Francisco's streetcars .\\n8 Perfect Location if you are Cruising from San Francisco\\n9 The location was perfect for perusing the shops at Fishermans Wharf, we had dinner at Nicks's Lighthouse , the food was fine but the rest rooms were in a horrendous state, which completely put us off .\\n10 What a great hotel terrific location !\\n11 Considering the rate $165 nite, and the location, 2 blocks from Fisherman's Warf, this is a terrific value .\\n12 Great location would stay here again\\n13 It is in an excellent location, which you need for such a short stay .\\n14 Overall a great hotel, awesome location, felt very safe everywhere we went .\\n15 We couldn't have been happier with the location and our room .\\n16 Had a very good stay at the hotel,everything clean and modern,absolutely great location for all the tourist attractions .\\n17 we were not there a lot, but the location was great .\\n18 Hotel is in perfect location .\\n19 We enjoyed Tuscan Inn location and large room\\n20 Location could not be better .\\n21 Also, the location is dull nothing of real interest withing a couple of blocks all around .\\n22 Best location in Fisherman's Wharf .\\n23 Which is a pitty, because the location was wonderful, and two of the staff members were really nice .\\n24 Phenominal Service, great room, great location , couldn't have asked for more .\\n25 Good location for most tourist sites, i .\\n26 Location in proximity to the Fisherman's Wharf was only 2 easy blocks away .\\n27 nice hotel great location liked the little extras\\n28 The location was PERFECT just a block and a half from fisherman's wharf and in walking distance to the pier with the sea lions, ghirardelli square, and the start of the cable car tour on the hill, and also was a block and a half from the starbucks where the streetcar stops to take you to other parts of the city .\\n29 Good Location Small Rooms Some charm\\n30 We chose this hotel for its great location .\\n31 A perfect location, can get loud outside, but overall would recommend hotel !\\n32 Really good location for me .\\n33 The location was amazing just a short walk from the cable car turn and all the main attractions at pier 39 .\\n34 A lovely hotel in a great location\\n35 The location was great, walk out the doors and forward 250 yards and you're on Pier39 and Fishermans Wharf right on the sea front .\\n36 A friendly hotel in a good location\\n37 This hotel is in a good location on Fisherman's Wharf .\\n38 Everything about our stay at Best Western, Tuscan Inn was great, location to the wharf, cable cars and everything we wanted to see and do .\\n39 The location of Fisherman's Wharf area made me suspicious, as the area is very " touristy" .\\n40 However, the Tuscan Inn has the best of all worlds, great location, all the amenities, excellent staff, nice restaurant adjoining, and very reasonable prices .\\n41 the tuscan inn has a good location, within easy walking distance to the wharf .\\n42 We loved the location, , easy walking distance to the wharf and cable cars .\\n43 00, however that being said if you are used to staying at true Kimpton hotels this will leave you wanting, but again location and price makes this a great hotel, the wine they serve is 2 buck chuck get there early if you want to partake, there were people everywhere waiting for the pourings, so we decided to skip out on this one\\n44 Great location service and value !\\n45 This hotel was in a great location to the Wharf and other sites in the city .\\n46 perfect location comfortable room !\\n47 Perfect location, great italian resturant , SUPER concierege .\\n48 The location is excellent if you want to be near the wharf .\\n49 The location is good and the rooms are very pretty and clean .\\n50 So clean, quiet, excellent location, delicious coffee bar every morning, staff helpful friendly .\\n51 This hotel location could not be any better .\\n52 Perfect location to Fishermans Wharf .\\n53 Great location pretty good hotel\\n54 The location was really the best part .\\n55 Excellent Service , Great Location\\n56 I don't think you could do better for location, especuially if you're visiting the city for the first time .\\n57 Perfect Fisherman's Wharf Location\\n58 Perfect location near Fisherman's Wharf .\\n59 The Tuscan Inn has a great location to tourist sites within San Francisco .\\n60 Good Location but what's with the Check in out staff ?\\n61 Excellent location, close to the wharf and cable car lines .\\n62 Great location situated on the flat, no hill to climb !\\n63 The location is perfect being so close to the Wharf and Pier 39 and the Powel St .\\n64 The location of this hotel is great , close to Fisherman's Wharf, within walking distance of Ghiradelli Square, boats to Alcatraz and two cable car lines .\\n65 Although our weekend was during a storm, the close proximity to the piers and public transportation still made our location idea .\\n66 Location, wise, the hotel was perfect it was within walking distance of the pier for Alcatraz and a two minute walk away from the tram as well as Lombard Street .\\n67 The staff are so friendly and the hotel is in a great location, just 2 blocks from Fisherman's Wharf , bus and cable car station .\\n68 It's a truely wonderful little hotel, with great people in a great location bus stop across the street, f car one block down and cable car one block up and west where you can buy a 7 day ticket for all 3 , who needs a car !\\n69 This hotel offers a lot , a great location, great staff, free wine tastings and morning coffee .\\n70 Again a nice quaint hotel perfect location\\n71 The rooms were large and comfortable and the location was fine if you don't mind a little walking to the Wharf and other attractions .\\n72 room was quiet, clean with good beds but very very smallnot a cheap hotelvalit parking was to much expencive but oke its the location\\n73 Tuscon Inn was near the pier 39, which is a great location, checking in and out was easy .\\n74 I'd highly recommend the Tuscan Inn based on location, cheerfulness of staff, aesthetics in the room and general overall service .\\n75 The hotel is in a fantastic location just a 5 minute walk from Fisherman's Wharf and no more then 10 minutes from the cable cars and other attractions .\\n76 Great location, the concierge guy was fantastic and there is a lovely restaurant attached to the hotel that does a great breakfast !\\n77 Excellent service great location good value\\n78 The location is great, only 2 blocks from Fisherman's Wharf .\\n79 It is in a great location, 5 minute walk to Fisherman 's Wharf promenade and 5 minute walk to a tram stop .\\n80 The hotel was clean, in a good location and we would reccommend it to other travelors .\\n81 The location is great, only a few blocks from the Wharf .\\n82 Lovely boutique hotel in convenient location\\n83 The location is fantastic , a 5 minute walk to the Wharf and close to bus and trolley stops .\\n84 The location is hard to beat with a Safeway, Trader Joe\\u0092s, Borders, World Market and the cable car all within a block of this hotel .\\n85 Helpful staff and great location\\n86 This hotel is in a convenient location .\\n87 This hotel was clean and in a excellent location to everything .\\n88 A good location if you want to be walking distance to sights and transportation .\\n89 The location is great, I opted for a Fisherman's wharf stay for vacation having stayed near Union square on business in the past and I'm glad I did as it was easy walking distance to Chinatown and the touristy area of the wharf .\\n90 Location of the hotel was ideal to explore the know attractions, with just a 2 min walk to the wharf ferries and the famous cable cars, which transported you to union square lombard st etc .\\n91 The location is ideal but the car park is really expensive, so if you are ending a trip here, take your hire car back after you have unloaded your luggage and get a taxi to the airport .\\n92 This hotel is in a perfect location .\\n93 The Tuscan Inn was in a great location a few minutes from Fisherman's Wharf .\\n94 We have now stayed in three hotels in Fisherman's Wharf but the Tuscan Inn represents a good comprise of location, cost and facilities .\\n95 The location only 2 blocks from Fisherman's Wharf made it a perfect base for exploring the area, we were able to walk or take public transportation everywhere we went .\\n96 Great location to Fishermans Wharf .\\n97 My boyfriend's first response was " wow, this is a tiny room" , but it was what I was expecting considering the location and that this is only a 3, star property .\\n98 Location , This is the best part of the hotel .\\n99 The hotel is also very noisy but I guess this is inevitable considering the location .\\n100 If you want to be near Fishermans Wharf the location is great .\\n101 The location for tourists can not be beat .\\n102 Collect the same rate as for Fisherman's Wharf location .\\n103 First, it is in a fantastic location , blocks from Fisherman's Wharf and within walking distance to so many things !\\n104 The location is great, the hotel is very clean and nicely decorated .\\n105 all the staff we encountered were super friendly and the hotel location is great .\\n106 Fantastic choice, 10 days at the Tuscan, location is wonderful only a couple of blocks from pier 39 .\\n107 Perfect Location and Lovely Inn\\n108 The location is perfect , two blocks from Fisherman's Wharf and only a block to the street car and trolley .\\n109 Tuscan Inn has it all, exellant location,very close to public transport, very clean, impeccable, friendly service and a supermarket opposite .\\n110 We read reviews on many hotels looking for above average accomodations in a convenient location .\\n111 Great hotel, nice location for everything !\\n112 Excellent location friendly staff clean and pleasant rooms\\n113 The location was excellent , near the waterfront, the aquarium, Pier 39, Giradelli Square etc and very easy walk to cable cars, trolleys and bus routes .\\n114 The Tuscin Inn is a great hotel depending your room location .\\n115 Location is everything at this site everything you need is right in the area .\\n116 Loved this hotel and location !\\n117 Loved the location of this hotel !\\n118 Location was also near Pier 39 , Ghiradelli's chocolate factory, and Alcatraz .\\n119 Great location, near lots of stuff to walk too .\\n120 A great hotel in a great location\\n121 we found a friendly staff through out the hotel great location,rooms were small but as pointed out to me all land is prime in the area and all places have small rooms .\\n122 Location was nice for getting all around the city we mostly walked from place to place, even to and from downtown along the Embarcadero .\\n123 Good location a few blocks from Fisherman's Wharf, if that's where you want to be .\\n124 We were very pleased with the hotel's location right in the heart of Fisherman's Wharf North Beach .\\n125 The location was also right next to Fisherman's Wharf and a 3 minute walk to the cable car .\\n126 I stayed at the Best Western Tuscan Inn at fishermans wharf last year, and when i booked the room I was just glad that i got a room at a good location in S .\\n127 The hotel has the perfect location for a S .\\n128 The location the rooms the staff the concierge the Managers nightly wine reception everything about this hotel made our holiday MAGIC .\\n129 Highly recommend, great location, clean, quiet, friendly, nicely decorated, happy hour 5p, 6p, just tea coffee avail in am .\\n130 The Tuscan Inn at Fisherman's Wharf in San Francisco is in such a great location for tourism, I'm surprised there isn't a much larger hotel here .\\n131 We were very happy with the location of this hotel .\\n132 Location wise, it is very centralized, walkable distance to the fisherman's wharf as well as the cable cars at both Hyde and Powell Streets .\\n133 The hotel is very central to everything and I would stay there again for its location .\\n134 Rooms were pretty standard , but it's the location which sells this place .\\n135 A nice comfortable hotel in a good location .\\n136 This hotel is in the perfect location whether you are focusing your sightseeing at the Wharf or all over town .\\n137 The hotel itself is in a perfect location for all the attractions .\\n138 Excellent location, very close to the Fisherman's Wharf that made it very convenient to do the " tourist" things .\\n139 The first thing I have to comment on is the great location .\\n140 This was my 9th trip to San Francisco but unlike prior trips I was with my in, laws and had different criteria for the trip, they wanted to be close to all the Fisherman\\u0092s Wharf action and walking distance to the main tourist attractions, this hotel was ideal and the best value we could find in the location .\\n141 very good hotel , great location, concierge extremely helpful, decor is nice and the maid service was excellent .\\n142 The location is great, 2 blocks from FW and 5, 6 blocks from really good italian food in North Beach and Chinatown is in that area as well .\\n143 We loved the location as it was convenient to everything and a short walk to many attractions .\\n144 Good location avoid restaurant would not recommend\\n145 The travel agent booked this hotel and this was the only hotel out of 10 that I did not book myself although hotel sounded ok This was part of the deal for the airfares Location is excellent , Rooms Ok Staff variable some very helpful others not so .\\n146 The Tuscan Inn is markedly less expensive, and the location is identical .\\n147 It's a Best Western , so it's not luxery, but it's a nice hotel in a great location at a great price .\\n148 Great hotel in a great location for Fisherman's Wharf\\n149 Great Location , Hotel room good also\\n150 Overall an average hotel in a great location\\n151 The location was great as we were within walking distance to just about everything .\\n152 Excellent location 2 blocks from Fishermans Wharf and 1 block from cable car .\\n153 A good hotel in a good location for all the tourist attractions if you're walking, taxi or by bus .\\n154 A masseur was giving guests a massage at the same location, not sure if there was a charge involved for that service, as there was no information about that anywhere .\\n155 The location is within walking distance of fisherman\\u0092s wharf .\\n156 We were very suprised when we got there , the location was great, just set back enough to miss the noise of the warf but within a stones throw of all the action .\\n157 The Tuscan Inn is in a great location in Fishermen's Wharf and our boys really enjoyed Pier 39 .\\n158 Great location clean rooms we enjoyed our visit .\\n159 We were a little disappointed with the location of this hotel as although it is close to Fisherman's Wharf Pier 39, it wasn't very busy in the nearby streets so we didn't feel like lingering in the restaurants before returning at night .\\n160 The location is excellent for access to the cable cars and the wharf .\\n161 Great location for San Francisco sightseeing\\n162 The location of this hotel is great if you are there to enjoy the tourist stuff of SF .\\n163 Great Location For Exploring San Francisco\\n164 The location is perfect to explore the city .\\n165 The location is great, the staff very friendly and helpful, and the room was neat and clean though a bit small .\\n166 We booked this by checking other travellers comments on Trip Advisor and were pleased with the helpfulness of the staff, the location and overall cleanliness and comfort of our room .\\n167 The location of the hotel was within easy walking distance of Fisherman's Wharf and Ghiardelli Square .\\n168 Nevertheless, I did like this hotel, the rooms, location, and most of the service and I would stay here again .\\n169 The location is fabulous for getting around the Fisherman's Wharf and the concierge, Hugo and Cliff, are fantastic and full of wonderful ideas .\\n170 Great location, if you are doing north and east San Francisco stuff .\\n171 It's in a good location by Fisherman's Wharf Pier 39 .\\n172 The location is great and accessible to all parts of the city by bus, cable car or the " F" train .\\n173 Great location in Fishermans Wharf .\\n174 This hotel can trade on its location which, although a rather ugly and unappealing area full of tacky tourist shops, predictable chain restaurants and large number of tour groups, is an excellent base to explore the city .\\n175 The Best Western Tuscan Inn is at the perfect location in San Francisco .\\n176 The location was excellent for the Whalf attractions including cruises and Tram bus tours and for the cable car into Union square .\\n177 Really good location for Fisherman's Wharf .\\n178 Great Location but not great experiance\\n179 The Tuscan Inn is in a great location if you want to do the touristy things around Fisherman's Wharf but don't expect anything grand .\\n180 The hotel is in a great location, Close to Fishermans wharf, Cable cars, ect .\\n181 Clean,friendly,and the location was perfect .\\n182 Perfect location on the edge of Fisherman's Wharf .\\n183 We especially enjoyed eating at Cesar\\u0092s on Bay Street, which is an Italian restaurant at the same location for over 50 years .\\n184 Great location thought I had seen everything\\n185 The best part of the hotel was its location .\\n186 Exellent location for Pier39, Fishermans wharf and trams etc, with a large Safeway a block away .\\n187 Excellent location near Fishermans Wharf .\\n188 But if I could get a deal like this on the same hotel, I'd go back every year as we attend the same event every year, and the location and facilities were exactly what we needed .\\n189 Location is very convenient to Fisherman's Wharf, North Beach, Russian Hill, and the Embarcadero .\\n190 We were both delighted with the friendly staff, clean rooms and very convenient location .\\n191 Location is excellent, walking distance to Fisherman Wharf and Chinatown .\\n192 Visited 23 to 26 Sep , 4 nightsGreat location within walking distance of Fisherman's Wharf .\\n193 We'd stay at the hotel again since the location, facilities and price were good .\\n194 the location is great for pier 39 and alcatraz remember to pre book if you want to go onto the rock as when we went it was completely booked up for 5 days !\\n195 location, friendly staff, beautiful rooms and comfy beds .\\n196 Overall, though, a great location if you want to be near the Wharf .\\n197 Would definately recommend this hotal as the location is perfect , only afew blocks from Fishermans Wharf .\\n198 Great location near Fisherman's Wharf and a great price for a suite albeit not a huge one !\\n199 The Fisherman's Wharf location is a bit over the top touristy .\\n200 not to mention perfect location !\\n201 So, the location was awesome .\\n202 If you want to stay near the Wharf this is a good location .\\n203 The location is great since it is only a couple blocks to Fisherman's Wharf, the ferry for Alcatraz, Pier 39, Ghiradelli Square, cable cars, bus stops, and there is a small shopping center across the street with grocery store, etc .\\n204 If you're traveling to SF for the first time and have kids with you I think this is a perfect location .\\n205 The BW Tuscan Inn is a very charming hotel with an excellent location if you want to be within a 5 minute walk to Fisherman's wharf and Pier 39 .\\n206 The Tuscan Inn was perfect for us as far as location .\\n207 The location was good if you want to be near Fisherman's Wharf .\\n208 Great location service and beer .\\n209 Probably the best feature of the Tuscan Inn is its location .\\n210 We stayed at the Tuscan Inn for 3 nights at the end of May, the hotel has a great location within walking distance to the waterfront, including attractions and great restaurants .\\n211 Our travel agent, Terri, suggested this place and said it had a great location and cozier feel than some other hotels .\\n212 The hotel is in the perfect location for Fishermans Wharf and the best activity in San Francisco BIKE THE BRIDGE .\\n213 The location of the hotel is very good .\\n214 Ask to see a few rooms before you check in, because the room size and location can vary between floors and sides .\\n215 All in all, the location was perfect , a short walk to the cable cars or bus lines, a Safeway grocery and Walgreens drugs is across the street in a parking garage, type mall, and there are small places to eat breakfast nearby plus an IHOP a few blocks over .\\n216 good location but ask for a room away from the road\\n217 good location, close to fishermans wharf, pier 39, ghiradaelli square and cable car stops to union square .\\n218 And the location is perfect for tourists .\\n219 Although there is no pool or fitness facility at location, as others have mentioned, passes are available at the front desk for $9 day for the 24 hour facility right across the street that has both gym equipment and a pool .\\n220 8 10Location 11 10Amenities :\\n221 I continue to find BW's in unique places with good property locations .\\n222 Can't beat location, Mason and North Point .\\n223 The location is mere walking distance to the wharf, cable car, and so much more .\\n224 The Tuscan Inn is in a great location, 2 blocks from the wharf, a block from the cable car, a block from the F, Line, opposite a Safeway, and next door to a nice Italian restaurant .\\n225 It has everthing you need to have a great time in a great city, location, good service, great food , comfortable rooms and a complimentary happy hour .\\n226 Location is also great, with a couple of supermarkets within a block from the hotel .\\n227 Good hotel great location friendly staff .\\n228 We found the location for few days stopover to be perfect for the top sightseeing musts .\\n229 All in all a nice little hotel in a good location in Fishermans Wharf .\\n230 Great Hotel in a Great Location\\n231 The location of the hotel is excellent , only a few minutes walk from the cable car terminal and adjoined by a large Barnes and Noble bookstore with Starbucks for whiling away any spare moments !\\n232 The room had a few annoying decorative items , , like a four, foot long round pillow carefully placed at the same location on the bed by the maid every day , , that seemed spawned by a marketing maven .\\n233 Other than the small room, the location was great and very close to all the attractions of Fisherman's Wharf .\\n234 Perfect Location Priced A Little High\\n235 The location is terrific , two blocks from Fisherman's Wharf .\\n236 It is a 2 block walk to the wharf and the location is very convenient .\\n237 While the rooms were lovely for that price they were extremely small, but the location was just perfect .\\n238 Location is fantastic , , 2, 1 2 blocks from Fisherman's Wharf, 4 blocks to Pier 39, 1, 1 2 blocks to the trolley .\\n239 The location was perfect, we could go anywhere and still feel close .\\n240 It is in a great location, the staff is always alert and courteous, the rooms are clean, the morning coffee and biscotti are a nice touch, the happy hour is a PLUS, and the price is right !\\n241 I planned a weekend getaway and thought because of the location and Hotel chain we would receive good service .\\n242 If you get a cheap rate here, have low expectations and are sound sleepers, then this is good for location to Fisherman's Wharf attractions .\\n243 Nice, medium sized hotel in a good location .\\n244 This hotel is in a great location in terms of a walking distance to key Fisherman's Wharf attractions .\\n245 The location is excellent right in the centre of fishermans wharf, a few minutes walk to all the major attractions and cable car .\\n246 The staff at check, in were nice enough, but unfortunately the concierge was not very helpful, giving us wrong information about our car hire location causing us to get 2 cab rides instead of one .\\n247 Good value hotel for the location .\\n248 The location of the hotel was fantastic it takes a couple of minutes to walk to pier 39 and is right next to the tram stop to take you into the main shopping areas .\\n249 We would recommend this location for anyone who wanted to be close to all attractions .\\n250 The location was great, just a few blocks from Fisherman's Wharf .\\n251 Again, the location was great !\\n252 The hotel is in a great location you can walk to anything in the Fisherman\\u0092s Wharf area .\\n253 We enjoyed our comfortable, clean room, as well as the excellent location .\\n254 The location was a nice surprise as the cable cars are around the corner, buses available easily .\\n255 A wonderful property in a super convenient location .\\n256 I highly recommend this property to anyone looking for a comfortable stay in a quality hotel in a great location .\\n257 Very clean room, great location, wonderful service and dog friendly .\\n258 The location could not be any better .\\n259 The room was very well appointed with quality furnishings and it was decorated in a classy and individual style, not what you normally expect from a chain hotel in a touristy location .\\n260 Great room, friendly staff, superb location , just a couple of blocks away from the hustle and bustle of Fisherman's Wharf and 2 minutes from the cable car turnaround that takes you straight to Union Square .\\n261 The locationof the Tuscan Inn is the best, right on Fishermans Wharf .\\n262 You cannot beat the location !\\n263 The location is good here, but that is all the good I can say about this place .\\n264 The location is fantastic , just a few blocks from Fisherman's Wharf, and everything is nearby .\\n265 From the hotel we walked to Fisherman's Wharf, Pier 30, The Cannery, Ghirardelli Square, Coit Tower, Lombard Street, Chinatown, and many other locations .\\n266 The only good hting was the location .\\n267 Got to hotel, disappointed in the incredibly small rooms, but location is great .\\n268 PROSThe location is wonderful .\\n269 Overall though, the location was great and the hotel was nice .\\n270 It is in a great location, the rooms are clean and comfortable and the managers wine hour is a welcome bonus .\\n271 You also can't beat the Tuscan Inn for location .\\n272 Great location at a reasonable price\\n273 The hotel location was great .\\n274 The location is great, if your an active person you can walk everywhere from this hotel, in fact we took a long run up the shore , , crissy field and accross the golden gate bridge .\\n275 We plan on visiting the city often, and we plan on staying at this location for the foreseeable future .\\n276 The rooms and building are quite nice , location is excellent .\\n277 great location and reasonably priced\\n278 The location is perfect for walking to most attractions .\\n279 Big, clean comfortable room and a great location .\\n280 great rooms fantastic location and great service !\\n281 The best feature of this hotel is location, location, location .\\n282 Great Hotel and brilliant location near Fishermans Wharf\\n283 The staff were helpful, it was in a great location, and was very charming .\\n284 We would probably stay here again, as the location is also good .\\n285 Great hotel, great staff, great location not any problems what so ever .\\n286 You can't beat the location with a stick, but the " suite" was awfully small .\\n287 the staff was very friendly and the location is great .\\n288 The location is 1st class , a few minutes from the Wharf and all its attractions , and close to a Safeways Supermarket and handily placed for buses , trams and cable cars .\\n289 The location is perfect for the first, time visitor and Fisherman's Wharf has a lot of nice things to do and places to eat .\\n290 The best thing was the location, close walk to the wharf and other places .\\n291 Location is perfect for Fisherman's Wharf and adjoining areas .\\n292 The room was a good size and the location, being just a couple of blocks from the Wharf was excellent .\\n293 It is very convenient to Fisherman's Wharf and you can easily get to any other locations in the city via the Muni system .\\n294 Great location,close to everything .\\n295 Hotel is nice and clean, in a very convenient location, and the staff is friendly and helpful .\\n296 Great location for Fisherman's Wharf and a hotel with a homely, personal touch .\\n297 Lovely hotel and excellent location .\\n298 Overall though a top hotel in an excellent location .\\n299 We thought the location was excellent, , attractions in San Francisco are not all in one spot, so no hotel will be adjacent to everything you want to see .\\n300 Nice hotel close to the action however, I did not like the location , while it was close to the Wharf, the area of the hotel was seedy .\\n301 The location could NOT be better , we were 2 blocks from the Wharf !\\n302 Hotel could not have been in a better location , , can't be beat !\\n303 Courteous, responsive service and a great location !\\n304 The location was excellent, so close to all the touristy things .\\n305 The service was good, the wine service each evening was very nice next to the fireplace, and the location was awesome !\\n306 Comfortable hotel in very good location for ferries and Pier 39 .\\n307 Yes, the rooms were small for the money paid but the location was wonderful .\\n308 OK hotel,very small and tight room, nice lobby and good location if you want to be by all the tourists that get drawn to the wharf, the best part of the hotel, the restaurant downstairs on the corner, a little pricey but good breakfeasts and dinners .\\n309 if you want to be more center city, check out other locations in a different area .\\n310 The staff was friendly and helpful, the beds were comfortable, the rooms were clean, and the location was convenient .\\n311 The location was perfect for a walk to the wharf and North Beach .\\n312 A superb location, reasonable price, easy access to all the main sights and transit lines to get around the city .\\n313 Friendly Staff Great Location !\\n314 Location is great, very close to the wharf, easy walk to pier 39, less than a block's walk to the Cable Cars .\\n315 The location of the hotel provides easy walks to numerous area attractions .\\n316 The location is perfect, right near the Wharf and lots of restaraunts shops .\\n317 All in all, a fantastic hotel and a great location .\\n318 We loved the location and were able to walk to take a trolley to all of our desired local destinations .\\n319 Great location nice atmosphere !\\n320 The location is terrific, away from the city hassle but within walking distance to many attractions .\\n321 It was smaller than we were used to, but the location made up for it .\\n322 In addition, it is location, location, location .\\n323 That said, the location is marvelous .\\n324 If you are looking for a great location, I would recommend this hotel .\\n325 Great Place Even better location\\n326 It was a very convenient location to Pier 39 and the trolley cars .\\n327 Value location and they remember your name\\n328 It's location is fantastic if you want to get to the Ballpark, to the cable car, on and off the freeway, to the wharf, etc .\\n329 Decent suite OK price great location\",\n \" Drivers seat not comfortable, the car itself compared to other models of similar class .\\n0 It's very comfortable, remarkably large inside and just an overall great vehicle .\\n1 Front seats are very uncomfortable .\\n2 I'm 6' tall, and find the driving position pretty comfortable .\\n3 However, there are a couple of things that kill it for me 1 terrible driver seat comfort, kills my back 2 lack luster interior design, my Acadia has much better comfort 3 the VCM drives me crazy because the constant change in cylinder use is perceptible enough to be an annoyance .\\n4 The seats are extremely uncomfortable .\\n5 While the Accord is no Acura it is a close relative in terms of quality and comfort .\\n6 I previously owned a 98 Avalon, and found the seats more comfortable than the Honda .\\n7 I'm very sad , I loved my daughter's Civic and the dealer service is fantastic, but even good service can't help the uncomfortable seats .\\n8 Overall performance is good but comfort level is poor .\\n9 The ride is a great balance between handling and comfort .\\n10 Although it is fun to drive and quality seems ok, the leather seats are very uncomfortable, especially on a long drive .\\n11 Although not the fastest, most luxurious, or technologically advanced in the very competitive mid, size sedan segment, the Accord strikes the perfect balance of sport, comfort and value, creating a vehicle that feels and acts like a much pricier machine .\\n12 Has lots of features, is comfortable, everything works .\\n13 The two door coupe is very comfortable and roomy and draws plenty of attention .\\n14 The seat is extremely uncomfortable .\\n15 The driver's seat is very uncomfortable .\\n16 The head rest tills forward which pushes the driver's head forward at a very uncomfortable position .\\n17 The front driver seat's lumbar support seemed very uncomfortable at first .\\n18 The car is comfortable and QUIET .\\n19 No big deal The car is huge and very comfortable .\\n20 Very tight, runs great, very comfortable to drive .\\n21 The interior quality is OK, my 1999 Accord EX had a better comfort level on the seats .\\n22 Initially the dashboard controls were a little intimidating, but it doesn't take long to get comfortable with them .\\n23 I fit in the Coupe comfortably .\\n24 The driver seating is uncomfortable .\\n25 It's a comfortable ride and is very high quality .\\n26 For a 4 cylinder car I am surprised at the comfortable and peppy drive .\\n27 This a good choice if you need an affordable and comfortable commuting vehicle but hate the idea of a boring boxy sedan .\\n28 What a car, design, ride, comfort, 270 watt audio system, I love this car .\\n29 The seats are very comfortable & supportive .\\n30 I like my Accord very much, but had I known the drivers seat was so uncomfortable I would have never bought it .\\n31 Aside from missing the turbo's acceleration, I've preferred the Accord's better mileage, handling and comfort .\\n32 This Accord is the only large car I found with upscale comfort amenities and a good manual transmission .\\n33 Comfort inside is better than expected .\\n34 My family of 5 can comfortably ride in this car .\\n35 This car is a dream from the GAS to the STYLE to the COMFORT .\\n36 Its the most comfortable Accord I have had .\\n37 I do find the lumbar on the driver's seat a bit uncomfortable though .\\n38 The car is very comfortable, the steering is tight and precise .\\n39 The seats are comfortable, and there is ample leg room in the front and rear .\\n40 Most uncomfortable seats in any vehicle I have ever owned .\\n41 It is very comfortable, easy to drive and park .\\n42 I would recommend this car for great value, comfort, & fun to drive !\\n43 Seats are firm but not uncomfortable , very BMW like .\\n44 Rides with comfort and motor will pick up if you need it .\\n45 It gives a sporty driving feel and offers a very comfortable Highway ride .\\n46 Uncomfortable in Camry, Had a Nissan before, rough ride .\\n47 Test drove Honda and enjoyed the firm yet very comfortable ride .\\n48 It's very comfortable, has pretty much every luxury feature you might want, and is still fun to drive .\\n49 DON'T rely on your test drive, the seats are Very uncomfortable and when the engine goes into the econo mode the vehicle shifts rocks violently forward and when leaving the econo mode it shifts rocks forward once again which means that the vehicle is CONTINUOUSLY SHAKING AND ROCKING .\\n50 Seats are very comfortable and ride is very smooth !\\n51 My only complaint is comfort .\\n52 The front seats are extremely uncomfortable after anything more than 15 minutes of driving due to what I see as a design flaw, the seat curvature is too great, and even with the lumbar support all the way retracted, it still feels like there is some type of bar sticking out in the wrong part of my back .\\n53 However, the 08 Accord is well designed, handles well for its size and the comfort level is so much better than the TL .\\n54 Absolutely got a great car, roomy, comfortable, great ride for a nice price .\\n55 Fun to drive, safe, reliable, and comfortable .\\n56 Driver's seat is not fully adjustable using 8, way power seat which is very uncomfortable .\\n57 The car is solid, beautiful, comfortable, fuel efficient and big enough for my family of 5 .\\n58 Everyone loves the way it rides and we took it to the lake without a single complaint of comfort .\\n59 Driving 55 miles per hr between Houston and Austin this slow is very painful, boring to drv,Our Avalanche averaged 15 city with a very comfortable seat and only 20 highway but the vast majority of our driving is in the city not a good trade off .\\n60 At 6'5 it is very comfortable .\\n61 Good looking inside and out, comfortable and roomy, commendable performance, and excellent gas mileage .\\n62 However, long, distance comfort is poor due to hard, narrow and deeply, bucketed seats combined with a very taut suspension which transmits even minor road imperfections through the whole vehicle .\\n63 The seat contour creates uncomfortable pressure points which quickly become tiring and downright painful .\\n64 The Camry was very comfortable, but not sporty and the ride was boring .\\n65 s a great car, spacious, comfortable, fun to drive, and handles very well .\\n66 At first the seats seemed stiffer than I'd like, but after making a 2 1 2 hour trip, It felt very comfortable once I got the seat and lumbar adjusted to my liking .\\n67 extremely comfortable, more power than camry, lots of space, good fuel economy, and mean looking Cons :\\n68 Ride, comfort, visibility, braking, steering and acceleration are excellent for a car of its size and price .\\n69 The '08 is more comfortable and handles quite a bit better than the very good experience we had with the '06's .\\n70 Door closure is solid, leather seats are very comfortable .\\n71 From the hard and uncomfortable driver seat, excessive body roll, several rattles in the interior and intrusive road noise, the vehicle just does not strike a chord n .\\n72 In fact, I find my 2006 Civic Ex w Nav to be a better built, more comfortable and more engaging car .\\n73 Lots of room and very comfortable .\\n74 I purchased this car because the amount of time I spend on the road, I need a comfortable car that is reliable .\\n75 This car is comfortable, loaded with options and every one that gets into it loves it .\\n76 Seats are not very comfortable and not happy with the heated seats .\\n77 The seats are very comfortable and I love the cloth .\\n78 The Accord has looks, comfort, great ride and reliability .\\n79 Ample room for someone that is 6'2 , and extremely comfortable for my daily commute .\\n80 An extremely comfortable and capable sedan .\\n81 I went for comfort over performance to fit it in my budget so the EX, L with the 4 cyl engine .\\n82 So far, the reliability has been as expected, it is comfortable on my back, and the gas mileage has been pretty good .\\n83 The interior design is roomy and very comfortable .\\n84 Steering nice and tight, seats a little stiff but comfortable .\\n85 Interior is very roomy, and I can sit comfortably in the rear seat at 6'2 .\\n86 Great car, really comfortable and quiet .\\n87 Solid build, comfortable interior, smooth ride, fuel efficient averaging 27 .\\n88 This is my second Accord and it's bigger, zippier and more comfortable .\\n89 This car is stylish and very comfortable to drive .\\n90 It is comfortable, easy to drive, and fast !\\n91 Very comfortable and roomy vehicle .\\n92 The ride is firm but not harsh, It is more comfortable than the Maxima and looks much better than any Camry .\\n93 I previously owned a Chrysler 300 2006, so it is difficult going from a real comfortable interior, really massive dash to a bland and old fashioned interior .\\n94 Fun to drive, economic, very comfortable, and excellent on the highway .\\n95 It's much more comfortable than the Vette and I absolutely love driving it .\\n96 It has great handling and does so with comfort .\\n97 Have to say the comfort, look, design and how it drives is first rate .\\n98 Back seat comfort and entry exit are great .\\n99 Ride is superior, comfortable seats, radio excellent .\\n100 my first fill up was 26 mpg mixed city and hwy I only expect it to get better, steering is tight and precise, only complaints are road noise is more than i like but its livable, rain or just dew pours in right on top of the power window controls when the window is cracked, but window guards have fixed that, its a fun car to drive, and for what it is, its comfortable, controls are great, easy to reach, I'm looking forward to a lot of great miles with this car .\\n101 The Honda was very comfortable to drive and averaged 32 miles per gallon .\\n102 The leather seat is not the most comfortable, but not bad .\\n103 I drive 140 miles daily, and found the comfort the best feature .\\n104 It drives well, the satellite radio is awesome and it has the comfort of home .\\n105 It has a comfortable ride and most controls are logical, but the location of the volume knobs takes some getting used to .\\n106 Excellent car, would recommend this to anyone looking for a sharp, reliable, comfortable sedan .\\n107 A little pricy but it's really a comfortable car and a great driving machine .\\n108 Great comfort in the Accord .\\n109 Awesome interior with great comfort .\\n110 Three months and I still can't get comfortable in the LX .\\n111 For test drive , I wish I had removed the hard plastic from the driver's seat tried harder to get comfortable in the non, electric seat spent more time on rough roads .\\n112 but I do miss the more comfortable ride of my '05 & '96 Camry's .\\n113 Otherwise the car is comfortable, stylish, spacious and it handles well .\\n114 Very comfortable ride compared to my Lexus .\\n115 My main reason for purchasing this car was to get a fuel, efficient vehicle that also was comfortable to drive on long trips .\\n116 Interior is nice but not as comfortable as past Accords and feels a little cheap .\\n117 I am extremely satisfied after the first week though it was more costly, I still like the smooth power and handling of the V, 6, the comfort of the leather interior, and something new for me .\\n118 This Accord model has a great balance of features that blends attractive styling, driveablity, build quality, economy, and comfort with all the loaded options that I will enjoy over several years and 100000\\n119 I wanted a larger car that was comfortable and the redesign of the Accord making it bigger made the difference .\\n120 The car is roomy inside, comfortable, handles and performs great and is fun to drive .\\n121 Cloth front seats big & comfortable .\\n122 Seats are stiff but once adjusted seem to become more comfortable .\\n123 Traded in my Oddysey for better gas mileage and more comfort .\\n124 So far not super impressed with gas mileage, and comfort, well lets just say my dealership just ordered a new seat cushion for me today .\\n125 Comfort is my only real complaint .\\n126 My my, I have never experienced such smooth performance, stability, pick, up, mileage and comfort that I am enjoying with my new 2008 Honda Accord .\\n127 I admire engine performance and comfort while driving atleast 30 mile a day to job .\\n128 On the inside, it was for the most part comfortable and luxurious .\\n129 The only hiccup I can report is that I think that the seats in our 2008 Odyssey are a bit more comfortable .\\n130 Don't get me wrong, the Accord is a comfortable car, I am just a big guy and the seats just feel like they could use a little more of something .\\n131 The 2008 Honda Accord EX, L V6 is an ideal combination of comfort, economy, and pleasure !\\n132 No, the Honda does not have the anti, sway of those vehicles in high, cornering speeds, but it is more comfortable .\\n133 Was looking for something fun, fast, comfortable and practical and got it all with this car .\\n134 The car achieves a nice balance between sportiness and comfort .\\n135 There is an amazing comfort level with this car .\\n136 Comfort based on the quality and attention to detail Honda efficiently packs into this newly reclassified full size car .\\n137 The interior is comfortable, neat and you can find everything within reach .\\n138 The heated leather seat is very comfortable and audio system is rocking .\\n139 Although it's a lower trim level, it has high quality interior trim very comfortable seats and and very smooth, quiet ride .\\n140 I love the interior layout and comfort .\\n141 My only complaint is the seat is not comfortable for a long period of driving and if it is raining and you barely roll the window down uou will get soaked .\\n142 Very roomy and comfortable even with 5 adults .\\n143 At 6'3 I can sit comfortably in the drivers seat and have an unobstructed view out the windows .\\n144 00 per gallon I wanted something more fuel efficient but large enough to seat four adults comfortably and provide a sense of safety too .\\n145 I commute alot, so interior is important to me, and its leather is does not seem cheap and comfort is top notch .\\n146 Gliding can best define the comfort and quietness of the ride inside .\\n147 With the leather seats, comfort is close to EX, L's at a best buy price .\\n148 Its ride, comfort and overall performance is an absolute joy .\\n149 Traded in a 2007 Hyundai Azera Limited that depreciated too fast for my comfort zone .\\n150 Leather seats are very comfortable .\\n151 Interior is very comfortable w ergonomic design in mind .\\n152 Front seats much more comfortable .\\n153 Comfortable, good in snow, easy to drive .\\n154 The driver, side seat is not comfortable .\\n155 This car is very comfortable car to drive .\\n156 Driver seat could be more comfortable however, but I love everything about it .\\n157 I find the interior comfortable for short and long trips .\\n158 My wife does say the vehicle is not as comfortable for long trips as other cars we've owned .\\n159 Comfortable ride no thanks to the comfort of the drivers seat !\\n160 Very comfortable drive, holds the road very nicely and a blast to drive .\\n161 The Accord is so large, comforting, and easy to understand radio system .\\n162 I was slightly concerned about all the reviews with the seats being uncomfortable .\\n163 This is by far the most comfortable vehicle I have owned .\\n164 When I bought this car a year ago, I initially wrote a review stating I may have buyer's remorse due to extremely uncomfortable driver's seat .\"\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n },\n {\n \"column\": \"cluster_label\",\n \"properties\": {\n \"dtype\": \"int32\",\n \"num_unique_values\": 3,\n \"samples\": [\n 0,\n 1,\n 2\n ],\n \"semantic_type\": \"\",\n \"description\": \"\"\n }\n }\n ]\n}" + } + }, + "metadata": {}, + "execution_count": 17 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "Cluster #0: 전자기기 리뷰\n", + "\n", + "Cluster #1: 자동차 리뷰\n", + "\n", + "Cluster #2: 호텔 리뷰\n", + "\n", + "로 잘 군집화됨" + ], + "metadata": { + "id": "KtTZcwuVhpeT" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 군집별 핵심 단어 추출하기" + ], + "metadata": { + "id": "NKTN1SXNh6GA" + } + }, + { + "cell_type": "markdown", + "source": [ + "각 군집에 속한 문서는 핵심 단어를 주축으로 군집화돼 있을 것임 -> 각 군집을 구성하는 핵심 단어가 어떤 것이 있는지 확인하기" + ], + "metadata": { + "id": "3ZSgoCYTh8fj" + } + }, + { + "cell_type": "code", + "source": [ + "cluster_centers = km_cluster.cluster_centers_\n", + "print('cluster_centers shape :', cluster_centers.shape)\n", + "print(cluster_centers)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "tPHpjSG_iESC", + "outputId": "0bd1d041-9b12-4e08-fde3-1d9ebb8f3c45" + }, + "execution_count": 18, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "cluster_centers shape : (3, 4610)\n", + "[[0.0100545 0. 0. ... 0.00706288 0. 0. ]\n", + " [0. 0.00099548 0.00174656 ... 0. 0.00183397 0.00144581]\n", + " [0. 0.00092552 0. ... 0. 0. 0. ]]\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "군집이 3개, word 피처가 4611개로 구성됨" + ], + "metadata": { + "id": "buFFSECAiL-3" + } + }, + { + "cell_type": "markdown", + "source": [ + "배열 값은 각 군집 내 피처 위치가 개별 중심과 얼마나 가까운가를 나타내므로 이 값을 이용해 각 군집별 핵심 단어를 찾을 수 있음" + ], + "metadata": { + "id": "YO3bFHooiPPo" + } + }, + { + "cell_type": "code", + "source": [ + "# 군집별 top n 핵심 단어, 그 단어의 중심 위치 상댓값, 대상 파일명 반환\n", + "def get_cluster_details(cluster_model, cluster_data, feature_names, clusters_num, top_n_features=10):\n", + " cluster_details={}\n", + "\n", + " # cluster_centers array의 값이 큰 순으로 정렬된 인덱스 값 반환\n", + " centroid_feature_ordered_ind = cluster_model.cluster_centers_.argsort()[:,::-1]\n", + "\n", + " for cluster_num in range(clusters_num):\n", + " # 개별 군집별 정보 담을 데이터 초기화\n", + " cluster_details[cluster_num] = {}\n", + " cluster_details[cluster_num]['cluster'] = cluster_num\n", + "\n", + " # cluster_centers_.argsort()[:,::-1]로 구한 인덱스 이용해서 top n 피처 단어 구함\n", + " top_feature_indexes = centroid_feature_ordered_ind[cluster_num, :top_n_features]\n", + " top_features = [feature_names[ind] for ind in top_feature_indexes]\n", + "\n", + " # top_feature_indexes로 해당 피처 단어의 중심 위치 상댓값 구함\n", + " top_feature_values = cluster_model.cluster_centers_[cluster_num, top_feature_indexes].tolist()\n", + "\n", + " cluster_details[cluster_num]['top_features'] = top_features\n", + " cluster_details[cluster_num]['top_features_value'] = top_feature_values\n", + " filenames = cluster_data[cluster_data['cluster_label'] == cluster_num]['filename']\n", + " filenames = filenames.values.tolist()\n", + " cluster_details[cluster_num]['filenames']=filenames\n", + "\n", + " return cluster_details" + ], + "metadata": { + "id": "uSeX8Asgid90" + }, + "execution_count": 19, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "def print_cluster_details(cluster_details):\n", + " for cluster_num, cluster_detail in cluster_details.items():\n", + " print('####### Cluster {0}'.format(cluster_num))\n", + " print('Top features:', cluster_detail['top_features'])\n", + " print('Reviews 파일명 :',cluster_detail['filenames'][:7])\n", + " print('==================================================')" + ], + "metadata": { + "id": "X0xNYbivitCj" + }, + "execution_count": 20, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "feature_names = tfidf_vect.get_feature_names_out()\n", + "\n", + "cluster_details = get_cluster_details(cluster_model=km_cluster, cluster_data=document_df, feature_names=feature_names, clusters_num=3, top_n_features=10)\n", + "print_cluster_details(cluster_details)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "gZlFFYq1tE2Q", + "outputId": "b3db3f70-9cc1-4a54-bd16-2adb9fba0f3f" + }, + "execution_count": 21, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "####### Cluster 0\n", + "Top features: ['screen', 'battery', 'keyboard', 'battery life', 'life', 'kindle', 'direction', 'video', 'size', 'voice']\n", + "Reviews 파일명 : ['fonts_amazon_kindle', 'features_windows7', 'speed_garmin_nuvi_255W_gps', 'updates_garmin_nuvi_255W_gps', 'directions_garmin_nuvi_255W_gps', 'satellite_garmin_nuvi_255W_gps', 'screen_ipod_nano_8gb']\n", + "==================================================\n", + "####### Cluster 1\n", + "Top features: ['room', 'hotel', 'service', 'staff', 'food', 'location', 'bathroom', 'clean', 'price', 'parking']\n", + "Reviews 파일명 : ['bathroom_bestwestern_hotel_sfo', 'parking_bestwestern_hotel_sfo', 'room_holiday_inn_london', 'service_swissotel_hotel_chicago', 'food_swissotel_chicago', 'food_holiday_inn_london', 'location_holiday_inn_london']\n", + "==================================================\n", + "####### Cluster 2\n", + "Top features: ['interior', 'seat', 'mileage', 'comfortable', 'gas', 'gas mileage', 'transmission', 'car', 'performance', 'quality']\n", + "Reviews 파일명 : ['comfort_honda_accord_2008', 'transmission_toyota_camry_2007', 'comfort_toyota_camry_2007', 'seats_honda_accord_2008', 'performance_honda_accord_2008', 'interior_toyota_camry_2007', 'quality_toyota_camry_2007']\n", + "==================================================\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# 문서 유사도" + ], + "metadata": { + "id": "rwkU-RdatI-x" + } + }, + { + "cell_type": "code", + "source": [ + "import numpy as np\n", + "\n", + "# 코사인 유사도 계산해서 반환하는 함수\n", + "def cos_similarity(v1, v2):\n", + " dot_product = np.dot(v1, v2)\n", + " l2_norm = (np.sqrt(sum(np.square(v1))) * np.sqrt(sum(np.square(v2))))\n", + " similarity = dot_product/l2_norm\n", + "\n", + " return similarity" + ], + "metadata": { + "id": "Jx6jRolDuRZy" + }, + "execution_count": 22, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "\n", + "doc_list = ['if you take the blue pill, the story ends' ,\n", + " 'if you take the red pill, you stay in Wonderland',\n", + " 'if you take the red pill, I show you how deep the rabbit hole goes']\n", + "\n", + "tfidf_vect_simple = TfidfVectorizer()\n", + "feature_vect_simple = tfidf_vect_simple.fit_transform(doc_list)\n", + "print(feature_vect_simple.shape)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "1qRRr70rvm_W", + "outputId": "0f977c21-962a-41e5-cb17-c5f194197c56" + }, + "execution_count": 23, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "(3, 18)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "희소 행렬임 -> array로 만들기 위해 밀집 행렬로 변환한 뒤 다시 각각을 배열로 변환" + ], + "metadata": { + "id": "AH5VttLIv8gP" + } + }, + { + "cell_type": "code", + "source": [ + "feature_vect_dense = feature_vect_simple.todense()\n", + "\n", + "# 첫번째 문장과 두번째 문장의 피처 벡터 추출\n", + "vect1 = np.array(feature_vect_dense[0]).reshape(-1, )\n", + "vect2 = np.array(feature_vect_dense[1]).reshape(-1, )\n", + "# 두 문장의 피처 벡터로 두 개 문장의 코사인 유사도 추출\n", + "similarity_simple=cos_similarity(vect1, vect2)\n", + "print('문장 1, 문장 3 cosine 유사도: {0:.3f}'.format(similarity_simple))\n", + "\n", + "vect3 = np.array(feature_vect_dense[2]).reshape(-1, )\n", + "similarity_simple=cos_similarity(vect1, vect3)\n", + "print('문장 2, 문장 3 cosine 유사도: {0:.3f}'.format(similarity_simple))\n", + "\n", + "similarity_simple=cos_similarity(vect2, vect3)\n", + "print('문장 2, 문장 3 cosine 유사도: {0:.3f}'.format(similarity_simple))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "oq8UqokiwD72", + "outputId": "293c195c-aa50-49ee-9385-d420040e23ff" + }, + "execution_count": 24, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "문장 1, 문장 3 cosine 유사도: 0.402\n", + "문장 2, 문장 3 cosine 유사도: 0.404\n", + "문장 2, 문장 3 cosine 유사도: 0.456\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "사이킷런의 API 이용해서 코사인 유사도 측정하기" + ], + "metadata": { + "id": "ZFMQudvjwlmM" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics.pairwise import cosine_similarity\n", + "\n", + "similarity_simple_pair = cosine_similarity(feature_vect_simple[0], feature_vect_simple[1:])\n", + "print(similarity_simple_pair)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "TTc6b_RHxIln", + "outputId": "5c182899-457f-4230-9388-8a4fff5eb26b" + }, + "execution_count": 25, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[0.40207758 0.40425045]]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# 쌍으로(pair) 코사인 유사도 값 제공\n", + "similarity_simple_pair = cosine_similarity(feature_vect_simple, feature_vect_simple)\n", + "print(similarity_simple_pair)\n", + "print('shape: ', similarity_simple_pair.shape)" + ], + "metadata": { + "id": "WXDn--QnxXSj", + "colab": { + "base_uri": "https://localhost:8080/" + }, + "outputId": "c9bd0219-794a-4d08-fc75-43a6508593ae" + }, + "execution_count": 26, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[1. 0.40207758 0.40425045]\n", + " [0.40207758 1. 0.45647296]\n", + " [0.40425045 0.45647296 1. ]]\n", + "shape: (3, 3)\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "## Opinion Review 데이터 세트를 이용한 문서 유사도 측정" + ], + "metadata": { + "id": "9JijVswTKBpL" + } + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "import glob, os\n", + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "from sklearn.cluster import KMeans\n", + "\n", + "path = r'/content/drive/MyDrive/Euron Homework/topics'\n", + "all_files = glob.glob(os.path.join(path, \"*.data\"))\n", + "filename_list = []\n", + "opinion_text = []\n", + "\n", + "for file_ in all_files:\n", + " df = pd.read_table(file_, index_col=None, header=0, encoding='latin1')\n", + " filename_ = file_.split('/')[-1]\n", + " filename = filename_.split('.')[0]\n", + " filename_list.append(filename)\n", + " opinion_text.append(df.to_string())\n", + "\n", + "document_df = pd.DataFrame({'filename':filename_list, 'opinion_text':opinion_text})\n", + "\n", + "tfidf_vect = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english', ngram_range=(1,2), min_df=0.05, max_df=0.85)\n", + "feature_vect = tfidf_vect.fit_transform(document_df['opinion_text'])\n", + "\n", + "km_cluster = KMeans(n_clusters=5, max_iter=10000, random_state=0)\n", + "km_cluster.fit(feature_vect)\n", + "cluster_label = km_cluster.labels_\n", + "cluster_centers = km_cluster.cluster_centers_\n", + "document_df['cluster_label'] = cluster_label" + ], + "metadata": { + "id": "rOaetC-9KIZG" + }, + "execution_count": 27, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "호텔을 주제로 군집화된 문서의 피처 벡터화된 데이터를 다른 문서의 데이터와의 코사인 유사도를 측정해 비교하기" + ], + "metadata": { + "id": "sO8BRuNgLDQL" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics.pairwise import cosine_similarity\n", + "\n", + "# cluster_label=1인 데이터가 호텔로 군집화된 데이터\n", + "hotel_indexes = document_df[document_df['cluster_label']==1].index\n", + "print('호텔로 클러스터링된 문서들의 DataFrame Index:', hotel_indexes)\n", + "\n", + "# 호텔로 군집화된 데이터 중 첫 번째 문서를 추출해 파일명 표시\n", + "comparison_docname=document_df.iloc[hotel_indexes[0]]['filename']\n", + "print('##### 비교 기준 문서명 ',comparison_docname,' 와 타 문서 유사도######')\n", + "\n", + "'''document_df에서 추출한 Index 객체를 feature_vect로 입력해 호텔 군집화된 feature_vect 추출\n", + "이를 이용해 호텔로 군집화된 문서 중 첫 번째 문서와 다른 문서 간 코사인 유사도 측정'''\n", + "similarity_pair = cosine_similarity(feature_vect[hotel_indexes[0]], feature_vect[hotel_indexes])\n", + "print(similarity_pair)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "dINMo3ndL5lG", + "outputId": "b3180e90-528d-43bf-dc4e-365e708512ef" + }, + "execution_count": 42, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "호텔로 클러스터링된 문서들의 DataFrame Index: Index([4, 5, 7, 9, 12, 14, 20, 22, 24, 28, 29, 35, 45, 46, 47, 50], dtype='int64')\n", + "##### 비교 기준 문서명 bathroom_bestwestern_hotel_sfo 와 타 문서 유사도######\n", + "[[1. 0.03638645 0.51442565 0.13867904 0.05221246 0.0430688\n", + " 0.06193142 0.32629328 0.13989601 0.11282857 0.09518076 0.07049388\n", + " 0.05857476 0.06189595 0.11742762 0.38038807]]\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "import seaborn as sns\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "%matplotlib inline\n", + "\n", + "# 첫번째 문서와 타 문서간 유사도가 큰 순으로 정렬한 인덱스 추출 & 자기 자신 제외\n", + "sorted_index = similarity_pair.argsort()[:,::-1]\n", + "sorted_index = sorted_index[:,1:]\n", + "\n", + "# 유사도 큰 순으로 hotel_indexes 추출해 재정렬\n", + "hotel_sorted_indexes = hotel_indexes[sorted_index.reshape(-1)]\n", + "hotel_1_sim_value = np.sort(similarity_pair.reshape(-1))[::-1]\n", + "hotel_1_sim_value = hotel_1_sim_value[1:]\n", + "\n", + "# 시각화\n", + "hotel_1_sim_df = pd.DataFrame()\n", + "hotel_1_sim_df['filename'] = document_df.iloc[hotel_sorted_indexes]['filename']\n", + "hotel_1_sim_df['similalrity']=hotel_1_sim_value\n", + "print('가장 유사도가 큰 파일명 및 유사도:\\n', hotel_1_sim_df.iloc[0, :])\n", + "\n", + "sns.barplot(x='similalrity', y='filename', data=hotel_1_sim_df)\n", + "plt.title(comparison_docname)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 532 + }, + "id": "55Uuo8lkMs6P", + "outputId": "7241251b-5e39-4095-f0b2-422216a435dd" + }, + "execution_count": 44, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "가장 유사도가 큰 파일명 및 유사도:\n", + " filename room_holiday_inn_london\n", + "similalrity 0.514426\n", + "Name: 7, dtype: object\n" + ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "Text(0.5, 1.0, 'bathroom_bestwestern_hotel_sfo')" + ] + }, + "metadata": {}, + "execution_count": 44 + }, + { + "output_type": "display_data", + "data": { + "text/plain": [ + "
" + ], + "image/png": "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+3/27Flu3LihEbcQQgghqq7ntvh3cHCga9euDBs2jFWrVmFiYkJoaCh169ala9euQOF0haZNmxIcHMyIESPQ1dXlwIED9O7dG0tLS6pXr85nn32GtbU1mZmZhIaGavRRq1YtDAwM2L17N/Xq1UNfX/+hx3waGRnx3nvvERISgqWlJfXr12fBggXcuXOHIUOGlNt49fX1GThwIOHh4dy8eZMxY8bQp08fZT73zJkzGTNmDGZmZnTs2JHc3FwSEhK4fv06EyZMYNGiRVhbW+Pm5ka1atX47rvvsLKyUs6g29raEh0djbe3N3p6elhYWACF8/6XLl1Kr169ALC0tMTZ2ZlvvvmGTz/9VImvf//+LFy4kK5duzJr1izq1avHxYsX2bx5M5MnTyYvL4/PPvuMt956izp16pCamkpaWhqBgYFK/xcuXCApKYl69ephYmKCn58fnp6edOvWjQULFuDo6Miff/7Jjz/+SPfu3fHw8Ci3/JZVSEgIffr0wc3NDT8/P3744Qc2b97M/v37lXWKy+m0adPo0qUL9evXp1evXlSrVo3k5GROnz7NnDlzyhTD4/bpg/z8/GjatCn9+/fnk08+4d69ewQHB+Pj41OpuRRCCCHE8+O5nfMPhdNIWrRoQZcuXfD09EStVrNz505luoajoyN79+4lOTmZVq1a4enpybZt29DW1qZatWps3LiRxMREmjRpwvjx41m4cKFG+9ra2ixZsoRVq1ZRp04d5aDiQWFhYfTs2ZMBAwbg7u7O+fPn2bNnj1JAlwd7e3t69OhB586deeONN2jWrJnGjcxDhw7l888/JzIykqZNm+Lj40NUVJTyuFITExPlBuiWLVuSkZHBzp07qVatcBdHRESwb98+bGxscHNzU9r18fEhPz9fmdsPhQcED75naGjIzz//TP369enRowfOzs4MGTKE//77D1NTUwwNDfn111/p2bMnjo6ODB8+nJEjR/Luu+8ChTdfd+zYUblZdsOGDahUKnbu3Enbtm0ZNGgQjo6OvP3221y8eJHatWuXW26fRLdu3Vi8eDHh4eE0btyYVatWERkZqZGT4nLq7+/Pjh072Lt3Ly1btuS1117j448/1rhZt7Qet08fpFKp2LZtGxYWFrRt2xY/Pz/s7Oz45ptvnigHQgghhHj5qNRqtbqygxBCPD9u3ryJmZkZrqNXoqX36Ptq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\n" + }, + "metadata": {} + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "# 한글 텍스트 처리 - 네이버 영화 평점 감성 분석" + ], + "metadata": { + "id": "VkwnGXTnNqbM" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 데이터 로딩" + ], + "metadata": { + "id": "LfHAHdDdnwo1" + } + }, + { + "cell_type": "code", + "source": [ + "import pandas as pd\n", + "\n", + "# cp949는 오류가 남\n", + "train_df = pd.read_csv('/content/drive/MyDrive/Euron Homework/rating_data/ratings_train.txt', sep='\\t', encoding='utf-8')\n", + "train_df.head(3)" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 143 + }, + "id": "_omomFsPO18x", + "outputId": "36b841a5-068b-44e5-c338-313e3bf2598b" + }, + "execution_count": 53, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " id document label\n", + "0 9976970 아 더빙.. 진짜 짜증나네요 목소리 0\n", + "1 3819312 흠...포스터보고 초딩영화줄....오버연기조차 가볍지 않구나 1\n", + "2 10265843 너무재밓었다그래서보는것을추천한다 0" + ], + "text/html": [ + "\n", + "
\n", + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
iddocumentlabel
09976970아 더빙.. 진짜 짜증나네요 목소리0
13819312흠...포스터보고 초딩영화줄....오버연기조차 가볍지 않구나1
210265843너무재밓었다그래서보는것을추천한다0
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "\n", + "\n", + "
\n", + " \n", + "\n", + "\n", + "\n", + " \n", + "
\n", + "\n", + "
\n", + "
\n" + ], + "application/vnd.google.colaboratory.intrinsic+json": { + "type": "dataframe", + "variable_name": "train_df" + } + }, + "metadata": {}, + "execution_count": 53 + } + ] + }, + { + "cell_type": "code", + "source": [ + "train_df['label'].value_counts()" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 178 + }, + "id": "rghKFt5snK1t", + "outputId": "5b047317-6733-4672-dbfd-df74a03a0c12" + }, + "execution_count": 54, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "text/plain": [ + "label\n", + "0 75173\n", + "1 74827\n", + "Name: count, dtype: int64" + ], + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
count
label
075173
174827
\n", + "

" + ] + }, + "metadata": {}, + "execution_count": 54 + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "1: 긍정 감성\n", + "\n", + "0: 부정 감성" + ], + "metadata": { + "id": "nw3jPbIQnqjO" + } + }, + { + "cell_type": "markdown", + "source": [ + "## 데이터 전처리" + ], + "metadata": { + "id": "MowCFFKipSnM" + } + }, + { + "cell_type": "code", + "source": [ + "import re\n", + "\n", + "train_df = train_df.fillna(' ')\n", + "# 정규 표현식으로 숫자를 공백으로 변경\n", + "train_df['document'] = train_df['document'].apply(lambda x:re.sub(r\"\\d+\",\" \",x))\n", + "\n", + "# 테스트 데이터 세트를 로딩하고 동일하게 Null 및 숫자를 공백으로 변환\n", + "test_df = pd.read_csv('/content/drive/MyDrive/Euron Homework/rating_data/ratings_test.txt', sep='\\t', encoding='utf-8')\n", + "train_df = train_df.fillna(' ')\n", + "train_df['document'] = train_df['document'].apply(lambda x : re.sub(r\"\\d+\",\" \",x))\n", + "\n", + "# id 칼럼 삭제\n", + "train_df.drop('id', axis=1, inplace=True)\n", + "test_df.drop('id', axis=1, inplace=True)" + ], + "metadata": { + "id": "wvpZ4KJqntWX" + }, + "execution_count": 55, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## 피처 벡터화" + ], + "metadata": { + "id": "0qunI35ioZcl" + } + }, + { + "cell_type": "code", + "source": [ + "!pip install konlpy" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ApA2s-7qrAOR", + "outputId": "41bf861f-6526-433c-b46e-67639d7957d3" + }, + "execution_count": 57, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Collecting konlpy\n", + " Downloading konlpy-0.6.0-py2.py3-none-any.whl.metadata (1.9 kB)\n", + "Collecting JPype1>=0.7.0 (from konlpy)\n", + " Downloading jpype1-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (4.9 kB)\n", + "Requirement already satisfied: lxml>=4.1.0 in /usr/local/lib/python3.11/dist-packages (from konlpy) (5.4.0)\n", + "Requirement already satisfied: numpy>=1.6 in /usr/local/lib/python3.11/dist-packages (from konlpy) (2.0.2)\n", + "Requirement already satisfied: packaging in /usr/local/lib/python3.11/dist-packages (from JPype1>=0.7.0->konlpy) (24.2)\n", + "Downloading konlpy-0.6.0-py2.py3-none-any.whl (19.4 MB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m19.4/19.4 MB\u001b[0m \u001b[31m29.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hDownloading jpype1-1.5.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (494 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m494.1/494.1 kB\u001b[0m \u001b[31m29.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hInstalling collected packages: JPype1, konlpy\n", + "Successfully installed JPype1-1.5.2 konlpy-0.6.0\n" + ] + } + ] + }, + { + "cell_type": "code", + "source": [ + "# 형태소 분석 -> 형태소 단어로 토큰화\n", + "from konlpy.tag import Twitter\n", + "\n", + "twitter = Twitter()\n", + "def tw_tokenizer(text):\n", + " # 입력 인자로 들어온 텍스트를 형태소 단어로 토큰화해 리스트 형태로 반환\n", + " tokens_ko = twitter.morphs(text)\n", + " return tokens_ko" + ], + "metadata": { + "id": "6sipRERCpc5A" + }, + "execution_count": 58, + "outputs": [] + }, + { + "cell_type": "code", + "source": [ + "from sklearn.feature_extraction.text import TfidfVectorizer\n", + "from sklearn.linear_model import LogisticRegression\n", + "from sklearn.model_selection import GridSearchCV\n", + "\n", + "# Twitter 객체의 morphs() 객체를 이용한 tokenizer를 사용\n", + "tfidf_vect = TfidfVectorizer(tokenizer=tw_tokenizer, ngram_range=(1,2), min_df=3, max_df=0.9)\n", + "tfidf_vect.fit(train_df['document'])\n", + "tfidf_matrix_train = tfidf_vect.transform(train_df['document'])" + ], + "metadata": { + "id": "7Wl5B91ipx4I" + }, + "execution_count": 59, + "outputs": [] + }, + { + "cell_type": "markdown", + "source": [ + "## 감성 분석" + ], + "metadata": { + "id": "KriFbEcArdpH" + } + }, + { + "cell_type": "code", + "source": [ + "# 로지스틱 회귀를 감성 분석 분류 수행\n", + "lg_clf = LogisticRegression(random_state=0, solver='liblinear')\n", + "\n", + "# 파라미터 C 최적화를 위해 GridSearchCV 이용\n", + "params = {'C': [1, 3.5, 4.5, 5.5, 10]}\n", + "grid_cv = GridSearchCV(lg_clf, param_grid=params, cv=3, scoring='accuracy', verbose=1)\n", + "grid_cv.fit(tfidf_matrix_train, train_df['label'])\n", + "print(grid_cv.best_params_, round(grid_cv.best_score_, 4))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ETXlRTwSrifW", + "outputId": "9c0be744-f147-4374-fcd6-8a180b54f97b" + }, + "execution_count": 60, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Fitting 3 folds for each of 5 candidates, totalling 15 fits\n", + "{'C': 3.5} 0.8593\n" + ] + } + ] + }, + { + "cell_type": "markdown", + "source": [ + "테스트 세트를 이용해 최종 감성 분석 예측 수행" + ], + "metadata": { + "id": "ssclVOBXuw-B" + } + }, + { + "cell_type": "code", + "source": [ + "from sklearn.metrics import accuracy_score\n", + "\n", + "# 학습 데이터를 적용한 TfidfVectorizer를 이용해 테스트 데이터를 TF-IDF 값으로 피처 변환함\n", + "test_df = test_df.fillna(' ')\n", + "tfidf_matrix_test = tfidf_vect.transform(test_df['document'])\n", + "\n", + "# classifier는 GridSearchCV에서 최적 파라미터로 학습된 classifier를 그대로 이용\n", + "best_estimator = grid_cv.best_estimator_\n", + "preds = best_estimator.predict(tfidf_matrix_test)\n", + "\n", + "print('Logistic Regression 정확도: ', accuracy_score(test_df['label'], preds))" + ], + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "42F7Gyb5u3BP", + "outputId": "890401e6-84e7-4317-e163-12c7ec27766c" + }, + "execution_count": 62, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "Logistic Regression 정확도: 0.86108\n" + ] + } + ] + } + ] +} \ No newline at end of file diff --git "a/Week13_\354\230\210\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.pdf" "b/Week13_\354\230\210\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.pdf" new file mode 100644 index 0000000..ab8db77 Binary files /dev/null and "b/Week13_\354\230\210\354\212\265\352\263\274\354\240\234_\352\271\200\355\203\234\354\230\201.pdf" differ