[IR] สรุปจาก Quiz ที่1

ข้อที่หนึ่ง ข้อใดต่อไปนี้ไม่จัดเป็นระบบ IR A: ค้นหาคำว่า “computer” จาก E-mail B: ค้นหาคำว่า “computer” จาก Google C: ค้นหาคำว่า “computer” จาก windows explorer ตอบ ข้อ C เพราะงานในด้าน IR นั้นจะยุ่งกับข้อมูลในส่วนของ unstructure data(ข้อมูลทีไม่ได้จัดเก็บเป็นระบบ เช่น ไฟล์ word, e-mail) เอามาทำเป็น index และทำส่วนรองรับการค้นหาจากผู้ใช้ แต่ในกรณีของข้อ C: ค้นหาคำว่า “computer” จาก windows explorer ไม่นับว่าเป็นระบบ IR เพราะใน windows explorer มีการจัดเก็บข้อมูลอย่างเป็นระบบ(Structure data)เป็น folder และ sub-folder เป็นต้น ข้อที่สอง การจัดเก็บ Term ลงในส่วนของ Inverted Index เรียกว่าอะไร A: posting B: dictionary C: token ตอบ ข้อ B เพราะ dictionary เป็นที่จัดเก็บของ Term แต่ละแบบ โดยในแต่ละ Term จะที posting list ในการบ่งบอกว่า Term นี้ ค้นพบที่ document อะไร ข้อที่สาม การทำ Stem จะไม่ลดค่า precision จริง หรือไม่ ตอบ เท็จ เพราะคำที่ผ่านการ Stem จะถูกทำให้เป็นรากศัพท์ ซึ่งจะนำ Term หลายๆเทอมมารวมกันเก็บลงใน posting…

[IR] คำถามเกียวกับการทำ Cluster Pruning

คำถาม: การทำ Cluster Pruning ใน Lecture 6 หน้า 33-37 โดยการกำหนดค่า b1 และ b2 นั้น เมื่อ b1 และ b2 มากขึ้นจะทำให้เกิดอะไรขึ้นต่อการคำนวณ คำตอบ: มาดูคำแต่ละคำกันก่อนว่า คือ อะไร Cluster คือ การแบ่งกลุ่ม โดยที่เรายังไม่รู้ว่าจะได้กี่กลุ่ม Pruning คือ การจัดทอน ลดจำนวน (ลดโดยการจัดเป็นกลุ่ม ทอนข้อมูลจำนวนมหาศาล ให้ลดลง) Cluster Pruning คือ การเตรียมข้อมูล ซึ่งก็คือ document ต่างๆ ในระบบ(ทำตั้งแต่ช่วงสร้าง Dictionary เลย) เพื่อที่จะแบ่งกลุ่ม document ที่คล้ายๆกัน ให้อยู่กลุ่มเดียวกัน เพื่ิอที่จะช่วงลดเวลา ในการค้นหา โดยจะกำหนดให้มี Leader: เป็น document ถูกกำหนดว่า Query จะต้องมาหา Score ที่นี่ก่อนที่จะตัดสินใจเลือกกลุ่มของ Leader นั้นๆ Follower: เป็น document ที่ถูกจัดกลุ่มให้ติดตาม Leader เพราะมีความคล้ายกัน หมายเหตุ ความสัมพันธ์ของ Leader กับ Follower จะมีความสัมพันธ์แบบ 1 ต่อ 1 (b1=1) การทำงาน เมื่อมี Query Query จะไปหา Leader ที่มีความใกล้เคียงมากที่สุด จำนวน 1 ตัว (b2=1) เมื่อได้ Leader ที่ใกล้เคียงแล้ว ระบบก็จะหา document จาก Follower ทีติดตาม Leader นั้นๆ มาจำนวน K…

[IR] ข้อสงสัยของ Frequency แบบต่างๆ

จากที่เรียนมาจะมี 3 คำ ได้แก่ term frequency คือ จำนวนเทอมนั้นๆ ในเอกสาร document frequency คือ จำนวนเอกสารที่มี term ที่สนใจปรากฏอยู่ (ไม่ว่าในเอกสารนั้นจะมีคำจำนวนมากมาย ก็จะนับเป็นหนึ่งเท่านั้น) collection frequency คือ จำนวนครั้งที่ term นั้นปรากฏทั้งหมดรวมในทุกๆเอกสาร หรือในระบบ(Collection) ตัวอย่าง สมมุติมี document แค่ 2 อันในระบบ(collection) doc1: I like a dog doc2: You like a cat and a bird term frequency (doc1) I = 1 a = 1 like = 1 dog = 1 term frequency (doc2) you = 1 a = 2 like = 1 cat = 1 and = 1 document frequency I = 1 a = 2 like = 2 dog = 1 cat = 1 you = 1 collection frequency I =…

[Internship@True]วันที่ 28-29

ในสองวันนี้ ก่อนจบการฝึกงานที่ยาวนานกว่าสองเดือน(ไม่ได้ทำกับทีม แต่ไปทำกับ Outsource) ผมได้รวมงานของผมที่ทำกับงานของพี่ โดยไฟล์ในส่วนที่พี่ทำใหม่นั้นจะมีการเปลี่ยนแปลงเท่าที่สังเกตมา 2 อย่าง ได้แก่่ การสร้างส่วนของ Class ต่างๆ จากเดิมที่ใช้ aBator มาเป็นการใช้ MyBatis(iBatis แต่เปลี่ยนชื่อใหม่) และใช้ Tools MyBatis generator ในการสร้างClass, DAO และ sqlMap และมีการใช้งานที่ง่ายมากขึ้น โดยเฉพาะใน่สวนของ where clause ที่เราสามารถที่จะเรียก method มาเพื่อให้ตัว Framework มัน Mapping ให้ การวางพื้นฐานการออกตัว Report มาให้แล้ว อันนี้ยังไม่ได้ศึกษาจากที่พี่ทำมาเลยฮ่าๆ

[Internship@True]วันที่ 27

วันนี้ศึกษาการนำเสนอข้อมูลด้วยกราฟเพิ่มเติม(จากที่อาจารย์สอน เราก็ไม่ได้อะไรเลย อ.มัว แต่ไปรับงานนอก) โดยจากข้อมูลที่ได้มา แต่ต้องการที่จะเอาข้อมูลในส่วนของ filter, transmitted และ received โดยกราฟที่ได้ทดลองและศึกษา ได้แก่  แผนภูมิเส้น เพราะจะนำมาแสดงความต่อเนื่องของค่า  filter, transmitted และ received ในแต่ละวัน/เดือนได้ แต่มีปัญหาตรงที่เวลาไป plot แล้วนั้น ในส่วนของ transmitted  กับ received มีความทับซ้อนกัน เพราะค่าทั้ง 2 มีความใกล้เคียงกันมาก เลยไม่ได้ใช้กราฟชนิดนี้ แผนภูมิคอลัมน์ แบบเรียงซ้อน (Stack) จะหาผลรวมของ 3 ค่า   filter, transmitted และ received รวมออกมาในแท่งเดียว เพื่อที่จะลดพื้นที่ในแสดงผลลง แต่มีปัญหา คือ ไม่สามารถที่จะเปรียบเทียบความแตกต่างของข้อมูลในแต่ละวัน/เดือนได้ เลยไม่ได้ใช้กราฟชนิดนี้ แผนภูมิคอลัมน์ แบบกลุ่ม เปลี่ยนวิธีการเขียน SQL ใหม่จากเดิมที่ให้แยกเฉพาะเจาะจงไปทีละ node มาเป็นการหาผลรวมของ แต่ละกลุ่ม โดยสุดท้ายก็เลือกกราฟแบบนี้ เพราะมีความเหมาะสมที่สุดในการแสดงผล ที่มาข้อมูลเรื่องแผนภูมิ: ชนิดข้องแผนภูมิต่างๆใน Microsoft Office (เนื้อหาดีมาก ^__^)

[Internship@True]วันที่ 26

วุ่นๆกับการลงทะเบียนเรียนเทอมหน้า ที่ตอนจะลงวิชาเรียนจะต้องมาหาข้อสรุปมติ แต่ทำไมตอนจับกลุ่มโปรเจค ไม่เห็นมีแบบนี้บ้าง และก็โยนปัญหามาทางเรา ต่อมาจัดการวิชาเลือกเสรี เพราะโพสไปในเว็บบอร์ดสาขาที่ไม่มีคนจะมาโพสเพิ่ม อยากจะเป็นฝ่ายรับอย่างเดียว มีปัญหาอะไร โยนมาทางเราอีก ซวยอีกโดนบ่นในทวิตอีก ทำดีแล้วโดนด่า สู้ทำตัวแบบบางคนจะดีกว่า เห็นแก่ตัวเยอะๆ ช่วยงานบ้าง เสนอ idea แต่ไม่ต้องทำ

[Internship@True]วันที่ 25

จากงานที่ได้รับมอบหมายให้ปรับปรุง ก็จะมีการทำงานย่อยๆ 2 ส่วน ได้แก่ การดึงข้อมูลจาก DB ออกมา (ทำช่วงเข้า) [sql]SELECT * FROM MD_INBOUNDAUDIT_REGEXTV01 WHERE USE_FLAG = ‘Y'[/sql] การแปลงข้อมูลที่ได้เป็น jsonStore เพื่อที่จะเอาไปใส่ตัว combobox ของ Extjs ได้ (ทำช่วงบ่าย) ปัญหาที่พบ โดยหลักๆแล้วจะเป็นการยัดข้อมูลที่ได้ลงตัว Combobox ส่วนการ Query ดึงข้อมูลจาก DB นั้นไม่มีปัญหา ปัญหา: Uncaught TypeError: Cannot call method ‘on’ of undefined วิธีแก้: ตรง Combobox Config Store [javascript]store: ‘states’, มาเป็น store: states,[/javascript] ปัญหา: Uncaught TypeError: Cannot call method ‘getProxy’ of undefined วิธีแก้: ลองหลายแบบมาก ตั้งแต่การสร้าง simpleStore เก็บในตัวแปร และยัดลงไป ปรับปรุงการสร้าง Connection ให้มันมีส่วนข้อมูลนี้ ว่าไปดึงจากที่ไหน เก็บอย่างไร และปรับส่วนการ callback ให้ดีขึ้นด้วย และในที่สุดก็สามารถที่จะดึงมาแสดงผลใน Combobox ได้ T_T

[Internship@True]วันที่ 24

เมื่อก่อนที่ได้ Code พี่มาศึกษา เราต้องไล่แกะ Code และมาเขียนเองหมดเลย แต่ตอนนี้พี่เค้าแนะนำ Tool ตัวหนึ่งมาใช้ ชื่อว่า aBator ที่จะช่วยให้ใช้งาน ibatis ได้สะดวกขึ้น โดยจะมีการ Gen Class ต่างๆ, DAO และ sqlMap มาใช้เลยรวมถึง sql พื้นฐานต่างๆด้วย ทำให้เราสบายขึ้นเยอะ การใช้ aBator ในการ gen ไฟล์ที่เกี่ยวข้องในการใช้ ibatis กับ Spring ไฟล์ download ไฟล์มา โดยมีแหล่งความรู้ ดังนี้ import เข้ามาในโปรเจค ไฟล์ที่เราจะต้องรู้ ซึ่งก็จะมีส่วนที่จะต้องมาแก้ไขครั้งนี้ ต้องมาแก้ Path ของไฟล์ ibator-config_1_0.dtd ให้ถูกต้อง [xml]<!DOCTYPE ibatorConfiguration PUBLIC "-//Apache Software Foundation//DTD Abator for iBATIS Configuration 1.0//EN" "D:\MD_WORK\eclipse\workspace\aBator-3.0\config\ibator-config_1_0.dtd">[/xml] กำหนด Class Path เพื่อให้รู้จักกับ Oracle (ไฟล์ classes12.jar) [xml]<classPathEntry location="D:\MDR\defaultroot\WEB-INF\lib\classes12.jar">[/xml]

[Internship@True]วันที่ 23

วันนี้ก็มีการประชุมดูงานกัน และก็จะมีการปรับปรุงแก้ไขในส่วนของเว็บ คือ จะเพิ่มตัว Filter ขึ้นมาอีกอันนึง โดยจะเป็นตัว Node เพื่อที่จะสามารถจะดูข้อมูลได้ละเอียดยิ่งขึ้น และก็จะมีการหาค่า stat เพื่อเอามาเทียบข้อมูลของเมื่อวานกับวันนี้(นั่งฟังแต่ไม่เข้าใจ:P) โดยในส่วนนี้พี่ Outsource จะเป็นคนทำ และก็จะมารวมงานอีกทีตอนท้าย แต่ที่งง คือ ที่นี่ไม่ใช้ตัว Subversion(SVN) ในการช่วยให้การเขียนโปรแกรม จากคนหลายคนทำงานได้ง่ายยิ่งขึ้น และมีการตรวจสอบ version ได้ เพราะใน Eclipse ก็มีตัว plug-in support อยู่แล้ว ^__^

[Internship@True]วันที่ 21-22

ตอนนี้ก็ได้ทำเว็บจนเสร็จและ และพี่ที่ดูแลก็ OK เพราะ ต้องรอความต้องการของหัวหน้าจริงๆว่าจะให้แสดงอะไรบ้าง สิ่งที่ควรรู้คร่าวๆ เกี่ยวกับ iReport iReport เป็นโปรแกรม open source ที่ใช้ในการออกตัวรายงานรูปแบบต่างๆ มักจะเรียกว่า JasperReport ซึงตัวโปรแกรมจะมีหน้าตาคล้ายกับ Crystal Report โดยเราจะสามารถที่จะสร้างตัวรายงานได้อารมณ์เดียวกับการใช้ Microdsoft Word โดยไฟล์ตัวรายงานที่ได้จะจัดเก็บในรูปแบบ xml (.jrxml) ซึ่งเมื่อนำไป Complie จะได้เป็นไฟล์ (.jasper) พร้อมนำไปใช้งาน เนื่องจากมันฟรี ก็จะมีหลายคนนำไปใช้ในการออก report ในกับ web app โดยในโปรเจคนี้ จะมีการใช้งานเหมือนกัน แต่รอให้ใช้ก่อน แล้วค่อยมาเขียนบล็อกเพิ่ม ลองทำรายงานด้วย iReport ลองเล่นตัว Report Designer ไปที่ Download แล้วเลือกแบบ Other platforms เพื่อที่จะรันได้แบบ portable แต่ต้องมีตัว java runtime ในเครื่องด้วย จากนั้นก็ลองสร้าง Report ตาม wizard ก็จะมีปัญหาที่ว่า ClassNotFoundError! Msg: oracle.jdbc.driver.OracleDriver Possible not found class: oracle.jdbc.driver.OracleDriver เราจะมาเพิ่ม classpath เพื่อให้มันรู้จักกับ Oracle กัน