Rabbit Clan

Game Programming

UDK ตอนที่1

April27

ว่าจะลองๆ เล่นดูมานานแล้วครับ สำหรับ UDK แต่ไม่ได้ลองจริงๆจังสักที วันนี้พอมีเวลาเล็กน้อยเลยลองดู ผมใช้ UDK กับ Visual studio 2008 โดยใช้ plugin nFringe ครับ สำหรับในช่วงแรก พลักอินตัวนี้ ถ้าไม่ได้ทำ commercial ก็ใช้ได้ฟรีครับ แต่พอ unreal3 engine เปลี่ยนมาเป็น UDK ก็มีปัญหาเรืองการตั้งโปรเจค เพราะต้องใช้พาสเวิร์ดกับคีย์ ทาง nFringes เองเลยให้ User กับ Password มาใช้ฟรีก่อน จนถึงเดือนมิถุนานี้ครับ ก็ใส่ได้ตามนี้ครับ
Studio Name :UDK
Product Key :D B8K-6JF6-7TCW-DVMG-BBBB
ก็ลองใช้กันดูนะครับ ผมเห็นว่าฟรีเลยมาลงให้ดูก่อน
เดวไงทดลองแล้วแล้วคงมาเขียนผลตามครับ
เพิ่มเติม
สำหรับคนที่จะเริ่ม ลองดู tutorial หน้านี้ครับ
http://forums.epicgames.com/showthread.php?t=707357
สิ่งที่ต้องทำคร่าวๆ ก็คืออย่างแรก ก็ต้องลง visual studio 2008 จากนั้นก็ลง nFringe และสุดท้ายที่ขาดไม่ได้ก็ คือ UDK ครับ ถ้าลงครบหมดแล้ว
ก็ดาวโหลดสคริปโปรเจคง่ายๆตัวนี้ดูครับ โหลดที่นี่
จากนั้นก้ทำตามขั้นตอนนี้ครับ
Setup
1. Create the project in Visual Studio
Create a new project of type “UnrealScript” and select “UnrealEngine 3 Licensee Project”
Name: enter “SuperFunGame” or whatever you would like the package to be called.
Location: pick C:\UDK\UDK-2009-11\Development\Src
Uncheck “Create Directory for solution”
On the solution drop down leave it on “Create new Solution”
Finally, click OK to create the project
2. Configure the project
Right click on the project in the Solution Explorer and click Properties
Under General -> Game -> Target Game pick “UnrealEngine 3 Mod” from the drop down menu (this is needed because you can’t set the “Reference Source Path” when using the “UnrealEngine 3 Licensee Project” type.
Under General -> Script Compiler -> UCC Path pick: C:\UDK\UDK-2009-11\Binaries\Win32\UDK.exe
Under General -> Script Compiler -> Reference Source Path pick: C:\UDK\UDK-2009-11\Development\Src
Under Build -> Script Outputs check “Manual set UCC output directory” and set the path to C:\UDK\UDK-2009-11\UTGame\Script
Under Debug -> Start Action -> Start Game Executable set the path to C:\UDK\UDK-2009-11\Binaries\Win32\UDK.exe
Check “Enable unpublished mods”
With the project selected in Solution Explorer, right click, and select Add -> New Folder. Type “Classes” and hit enter. Now any new classes you make should be added under the Classes folder. To follow this tutorial, add “SuperFunGame.uc” which you downloaded above. Right click on “Classes” and select “Add existing item” (make sure you copied it to your Classes folder first in Explorer) then select “SuperFunGame.uc”
Finally, close the solution (MUST exit Visual Studio) and then reopen it. This adds all the Reference Source files which is the UDK source code. It also allows Intellisense to work correctly.
3. Build the project
Add an existing file (as a link) to your project from C:\UDK\UDK-2009-11\UTGame\Config\UTEngine.ini. Click the arrow to the right of Add and select “Add as a link”. This way it won’t copy the file to your project directory.
Edit the file and search for “ModEditPackages=” and make sure your mod name package is included there. Add a line: “ModEditPackages=SuperFunGame” if you are following this tutorial (now save and close UTEngine.ini).
Make sure the Output window is open in Visual Studio. Now you should be able to build using Visual Studio (press F6) or pick Build -> Build Solution from the menu. You will probably get an error about not being able to find the .NET Framework SDK but you can just ignore it.
Check your C:\UDK\UDK-2009-11\UTGame\Script folder for the output of the .u file for the package you just compiled. In this case, there should be a SuperFunGame.u file at that location.
Finally, if you see the .u file in there for the package you just build, then you are ready to test it out.
4. Run the project
Under the project properties -> Debug -> Start Action, check “Load map at startup” and type “dm-deck” or whatever map is available
Check “Start with specified game type” and type the “ModPackage.Class” such as “SuperFunGame.SuperFunGame”
Check “Enable unpublished mods”
Check “Open log window at position” and position it wherever
Run your project by pressing F5 inside Visual Studio
Visual Studio will pop up an information bubble saying that pixel mine doesn’t allow the free non-commercial nFringe to attach to UE3. But it can still be used to run the code and/or look at the log console or output.

posted under Unreal UDK | No Comments »

Search Engine : Project1

April23

วันนี้ผมเริ่มศึกษาเตรียมทำโปรเจคการบ้านวิชา Search Engine แล้วครับกะว่า ยังไงก็อยากให้เสร็จเร็วก่อนกำหนดอ่ะนะ แต่ยังไม่มั่นใจว่าจะทำอะไร เพราะคิดได้ แต่ทำได้รึเปล่า ไม่รู้ สิ่งแรกที่ผมต้องทำคือ ศึกษาโค๊ดในส่วนของ lab ที่จารย์เก่งได้สอนไว้ครับ ผมเรียนไปสามครั้งแล้ว ครั้งที่สี่ ก็ะจบคอสแล้ว ยังไงแนะนำว่าก่อนลุยโปรเจคอย่าลืมไปแกะ lab ก่อนนะครับ (ซึ่งผมคงเขียนอธิบายแยกอีกครั้ง ในส่วนของ lab) ผมเริ่มลงมือ ก็ Search หา Tutorial เพิ่ม เพราะผมอยากรู้ว่าเราจะใช้คำสั่งอะไรในการดาวโหลด File มาเก็บไว้ที่เครื่อง ก็ลงมือหาแต่ไปเจอ wiki ของ web crawler เข้าซะก่อน เห็นน่าสนใจดีครับ ผมเลยเอาลิงค์มาฝาก http://en.wikipedia.org/wiki/Web_crawler ลิงค์นี้ล่ะนะครับ ค้นไปค้นมานี่ไปกันใหญ่ ไปดูพวก bing กับ google bot ซะงั้น ก็จะได้รายละเอียดพวกมาตราฐานที่ต้องทำเพื่อให้ใช้ได้กับ web crawler เหล่านี้ ก็ยังไม่ค่อยเกี่ยวกับที่หาเท่าไหร่ ผมหาเจอที่เป็นการดาวโหลดรูปมา ก็โอเคครับ มาดู code กัน ตามนี้ครับ

You can download an image from a web server using javax.microedition.io.HttpConnection in J2ME.

The folowing methods shows you how to do this. getImageFromUrl(…) method gets an url as a parameter and returns an javax.microedition.lcdui.Image. This is done with the help of getDataFromUrl(…) method.

public static Image getImageFromUrl(String url) {
Image img = null;
try
{
String imageData = getDataFromUrl(url);
img = Image.createImage(imageData.getBytes(), 0,
imageData.length() );
}
catch(Exception e1) {
e1.printStackTrace();
}
return img;
}
public static String getDataFromUrl(String url)
throws IOException {
StringBuffer b = new StringBuffer();
InputStream is = null;
HttpConnection c = null;
long len = 0 ;
int ch = 0;
c = (HttpConnection)Connector.open(url);
is = c.openInputStream();
len = c.getLength();
if( len != -1) {
// Read exactly Content-Length bytes
for(int i =0 ; i < len ; i++ )
if((ch = is.read()) != -1) {
b.append((char) ch);
}
} else {
//Read until the connection is closed.
while ((ch = is.read()) != -1) {
len = is.available() ;
b.append((char)ch);
}
}
is.close();
c.close();
return b.toString();
}

ก็เครดิตหามาได้จากเวบนี้ครับ http://www.java-tips.org/java-me-tips/midp/how-to-download-an-image-from-a-web-server.html

เอออว่าแต่จะเอารูปมาเก็บยังไง ? อ้อ คงต้องลองดูก่อนล่ะครับ ผมคงต้องทำ เวบที่จะเป็นตัวเทส ให้ crawler มา Search อ่ะครับ เพื่อให้ง่ายต่อการทดลอง เดวทำแล้วจะมาโพสไว้นะครับ เผื่อใครอยากเอาไว้เทสด้วย แต่คงมีปัญหาเรื่องความน่าเชื่อถือ5555

OpenCV ตอนที่ 2

April9

หลังจากที่ ตอนแรกติดตั้งเสร็จนะครับ
ก็มาลองเทสโค๊ดกันครับ

ผมทำตามหนังสือแล้วเจอ Error ก็ขอแก้เป็นแบบนี้แล้วกันนะครับ

// OpenCV_Learn1.cpp : Defines the entry point for the console application.
//

#include “stdafx.h”
#include “highgui.h”

int _tmain(int argc, char* argv[])
{
IplImage* img = cvLoadImage(argv[0]);
cvNamedWindow(“Example1″,CV_WINDOW_AUTOSIZE);
cvShowImage(“Example1″,img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow(“Example1″);
return 0;
}

ก็มาดูกันครับ
ตัวอย่างที่2

#include “stdafx.h”
#include “highgui.h”

int _tmain(int argc, char* argv[])
{
cvNamedWindow(“AVI”,CV_WINDOW_AUTOSIZE);
//CvCapture* capture =cvCreateFileCapture(argv[1]);
CvCapture* capture =cvCaptureFromCAM(-1);
IplImage* frame;
while(-1){
frame = cvQueryFrame(capture);
if(!frame) break;
cvShowImage(“AVI”,frame);
int c = cvWaitKey(10);
if(c == 27) break;
}
cvReleaseImage(&frame);
cvDestroyWindow(“AVI”);
return 0;
}

posted under Uncategorized | No Comments »

OpenCV ตอนที่ 1

April9

วันนี้ ผมเริ่มกลับมาแกะ OpenCV ต่อครับ ตอนแรกก่อนหน้านี้นี่ ผมลอง OpenCV ที่มีคนเขียน เป็น C# ใช้งานติดตั้ง ลองโปรแกรม สำหรับมือใหม่ ง่ายมากครับ แต่พอจะใช้จริงเริ่มมึนๆ เพราะผมอ่อนหัด 555 เลย เอาหนังสือ มาดูLeaning OpenCV ในหนังสือเค้าเขียนเป็น C++ ครับ งานนี้เลยเริ่มแกะจาก C++ ดูครับ แค่มาติดตั้งตอนแรก ก็เจอปัญหาแล้วครับ เวอร์ชั่นใหม่ 2.1 เค้าเปลี่ยนอะไรไปบ้างเหมือนกัน แถมคู่มือการติดตั้งก็ไม่ค่อยอัพเดทตาม งานนี้เลยต้องใช้ google ช่วยบ้างก็เจอ เวบคนไทยกะฝรั่งช่วยสอนการติดตั้งได้ดีเลยครับ สองเวบตามลิงค์นี้นะครับ

อันนี้ของฝรั่ง uowteaminvincible.wordpress.com กับอีกอัน อันนี้ของคนไทยครับ blog/boobeejung ผมลองทำตามแล้ว บวกกะแก้ให้เหมาะกับเวอร์ชั่นล่าสุด ทุกอย่างก็โอเค สุดท้ายก็ รันโปรเจคได้ครับ ในหนังสือเค้าให้เรียน อาทิตย์ละ สองบท แต่ผมคิดว่าอาจไม่ทันกิน คงเป็นสองวัน บท ครับ อาทิตย์ละประมาณสามบท น่าจะดีกว่าสำหรับผมนะ ผมอ่านแล้วก็มาเขียนรีวิว แต่ละบทดูครับ

บทที่1 ก็จะเป็นการเริ่มต้น สอนว่าให้ด่าวโหลดที่ไหน ก็ที่นี่ครับ

ดาวโหลดที่นี่

แต่ผมไม่ได้โหลดตัว OpenCV-2.0.0a-win32.exe นะครับ ผมตั้งใจว่า จะเขียนบนวินโดว และใช้ Visual studio ด้วย ก็จะโหลดไฟล์ อันนี้แทนครับ อยู่ด้านล่างๆของ เวบนี้ OpenCV-2.1.0-win32-vs2008.exe
ก็จะเป็นเวอร์ชั่นล่าสุดนะครับ ใช้กับ Visual studio 2008 ก็เมื่อดาวโหลดมา ก็ ดับเบิ้ลคลิ๊กลงติดตั้งได้เลยครับ ของผมจะติดตั้งที่ C:\OpenCV2.1 แล้วตอนติดตั้งก็เลือกที่ ให้เพิ่ม system path สำหรับทุกคนด้วยครับ จากนั้นก็มาเปิด visual studio 2008 ครับ

1.เปิด Create –> Project

2.จากนั้นเลือก ตามรูปครับ win32 –>win32 Console Application

3.ไปที่ Tools –> Options –>Projects and Solutionns –> VC++Directories

เลือก ตรง Show directories for : Include files แล้วเลือก ตรงเพิ่ม (ไอคอนรูปแฟ้มนะครับ)เพิ่มนี่ครับ

C:\OpenCV2.1\include\opencv ก็จะได้เป็น แบบนี้ครับ

จากนั้นก็เปลี่ยน Show directories for : Libraly files ใส่เพิ่มตามนี้ครับ

C:\OpenCV2.1\lib


สุดท้ายครับ ปรับ Show directories for : Source filesใส่เพิ่มตามนี้ครับ

ใส่เพิ่มสี่อย่างคือ

1. C:\OpenCV2.1\src\highgui

2. C:\OpenCV2.1\src\cxcore

3. C:\OpenCV2.1\src\cvaux

4. C:\OpenCV2.1\src\cv

ก็จะเสร็จสำหรับการตั้งค่าโปรเจคทั่วไป แต่ทุกครั้งที่เราสร้างโปรเจคใหม่ เราต้องทำตรงนี้เพิ่มครับ ไปที่โปรเจคด้านขวามือ กดคลิ๊กขวาเลือก Properties

จากนั้นจะมีหน้าต่างขึ้นมา เลือกตามนี้ครับ Linker –> Input ใส่ค่าตามนี้ครับ ในช่อง Additional Dependencies

ตามนี้ครับ

  1. “cv210.lib”
  2. “cxcore210.lib”
  3. “highgui210.lib”
  4. เพิ่มแล้วแต่ที่จะใช้งานครับ


ก็เป็นอันเสร็จครับ จบบทที่1 เดวมาเขียนโค๊ดเทสดูในบทที่สองครับ

posted under OpenCV | No Comments »

WE608 Search Engine Class 3

April6

คลาสนี้ ออฟเขียนไว้ครับ

Web crawler
- เว็บคลอเลอร์ทำหน้าที่ค้าหาและโหลดหน้าเว็บมาเก็บไว้อย่างอัติโนมัต
- ปัจจุบันเว็บมีขนาดใหญ่ขึ้นและเกิดขึ้นใหม่เรื่อยๆทุกวัน
- เซิร์ทเอ็นจินไม่สามารถควบคุมการกระทำต่างๆของเว็บได้อาจจะมีส่วนแค่ในการทำ SEO
- เว็บเพจมีการเปลี่ยนแปลงตลอดเวลา
- คลอเลอร์ยังสามารถใช่ในการดึงไฟล์ชนิดอื่นๆได้เช่น เสียง ภาพ หนังเป็นต้น
3 retrieving web pages
- ทุกๆเว็บเพจจะมีหนึ่ง URL ดังเช่นนศ.หนึ่งคนมีหนึ่งรหัสนักศึกษา
- เว็บถูกเก็บไว้ใช่ในภาษา http เพื่อแสดงผลทางผังไคลเอ็ท
- http:/// www.cs.com /csinfo/peple.html
http = scheme www.cs.com = hostname resouce = /csinfo/people.html
4 retriveing web pages
- คลอเลอร์จะติดต่อผ่านทางระบบ โดเมนเนม
- ระบบโดเมนเนมจะแปลงจาก hostname เป็น iP addreass
- คลอเลอร์จะเชื่อมต่อกับโฮสโดยใช่พอร์ตที่จำเพราะเจาะจงเช่นพอร์ต 80
- หลังจากเชื่อมต่อ คลอเลอร์จะส่ง http ไปร้องของให้ใช่งานหน้านั้นๆ ต่อเซิฟเวอร์
5 crawling the web pic.
6 web crawler
- เริ่มด้วยการเซ็ต seed เพจ คือการใส่ URL เริ่มต้นของการคลอ
- คลอเลอร์จะเรื่มทำการดึงหน้า โดยการโหลดหน้าและดึงลิงค์ที่มี
- นำลิงค์อื่นๆที่ได้ในหน้านั้นมาใส่ไว้ในคิว แล้วก็คลอไปถ้าเจอลิงค์อีกก็นำมาใส่คิวไว้อีก จะดำเนินการไปเรื่อยๆจนหมดลิงค์หรือว่าฮาร์ดดิสเต็ม
7
- คลอเลอร์จะใช่เวลาส่วนใหญ่ไปกับการรอ คือรอในการโหลดเนื้อหาต่างๆ
- เราสามารถความไม่มีประสิทธิภาพของเว็บคลอเลอร์โดยใช่ fetch hundreds ซึ่งคือการส่งคลอเลอร์หลายๆตัวไปดึงของมูลหลายๆเว็บพร้อมๆกัน
- แต่จากการทำข้อด้านบนก็ส่งผลต่อการทำให้เกิด flodd site ได้ เพราะถ้าคลอเลอร์หลายๆตัวไปคลอเซิฟเวอร์ตัวเดียวกันก็จะทำให้เกิดการใช่งานหนักและเซิฟเวอร์ล้มได้
- หลีเลี่ยงปัญหานี้ได้โดยการดูว่ามีคลอเลอร์ตัวอื่นไปโหลดจาก เซิฟเวอร์ตัวเดียวกันหรือไม่ถ้ามีก็ให้รอไปก่อนอาจจะรอสีก 10 นาที 20 นาทีก็ตาม
8 controlling crawling
- คลอเลอร์บางที่ทำความรำคาญให้กับ admin ได้ ซึ่งเขาก็มีวิธีการดักคลอเลอร์ไว้โดยการเขียน robot.txt ซึ่งสามารถควบคุมการเข้าถึงของ คลอเลอร์ได้ หรือถ้าอยากให้คลอเลอร์เข้าถึงได้ง่ายก็อาจจะมีการเขียน sitemap ด้วย
9 freshness
- เพราะความสดใหม่ของข้อมูลไม่ว่าจะเป็นการเพิ่ม ลบหรือปรับปรุงเนื้อหาต่าง มีความสำคัญในการคลอมาก
- เพราะความสดใหม่นั้นคลอเลอร์จะต้องไปคลอเว็บนั้นบ่อยๆจึงจะได้ความสดใหม่มากๆ
10
- เราอาจจะสามารถคลอเฉพาะส่วนหัวได้เพราะมีการบอกว่ามีการเปลี่ยนแปลงเมือ่ไรไม่จำเป็นต้องไปคลอบ่อยๆคลอเฉพาะตามเวลาที่มีการเปลี่ยนแปลงเท่านั้น
- แต่บางครั้งก็มีการเปลี่ยนแปลงเนื้อหาภายใหรือ content-length แต่ไม่มีการเปลี่ยนแปลงวันเวลาแก้ไขก็เป็นได้ เช่นการดึงหน้าหรือแท็กมาจากเว็บอื่นเป็นต้น
11
- มันเป็นไปไม่ได้เลยที่จะเช็คทุกๆหน้าในเว็บบ่อยๆ ดังนั้นเราจะต้องละหรือใช้ความถี่ในการคลอต่างจากหน้าอื่นเช่น หน้าที่อยู่ของdpu ก็ไมจำเป็นต้องคลอบ่อยๆเพราะว่าแทบจะไม่มีการเปลี่ยน แปลงเลย
- Freshness คือ ความสดใหม่หรือความใกล้เคียงกับหน้าปัจจุบันมากที่สุด
- เพื่อความสดใหม่นี้ทำให้เราส่งคลอเลอร์ไปบ่อยเกินไปทำให้เสียประสิทธิภาพได้ ดังนั้นเราควรใช่วิธีการดูที่ Age หรืออายุแทนเป็นเป็น metric ชี้วัดที่ดีกว่า
12 freshness vs age
- มีประโยชน์โดยเฉพาะถ้าเรากำหนดเวลาในการไปคลอเป็นช่วงๆก็จะทำให้เรากำหนดช่วงการคลอได้และทำให้การทำ index ใช่ช่วงเวลาเดียวกันได้ เพราะช่วงเวลาที่เว้นไปคือที่ไม่ได้คลอเราสามารถนำไปใช่ทำ index ได้ หรือถ้าเราคลอเว็บแต่ละเว็บเวลาไม่ใกล้เคียงกัน ก็ต้องเสียเวลาในการทำ index บ่อยๆซึ่งเป็นสิ่งที่ไม่มีประสิทธิภาพ
13 focused crawling
- การโหลเฉพาะหน้าเว็บที่เกี่ยวกับหัวข้อที่เจาะจง มักจะใช่วิธี vertical search application
- เน้นคลอไปที่หน้าเว็บที่มีความน่าเชื่อถือและเกี่ยวข้อมากที่สุด
- คลอจะใช่การดังสินใจด้วยเนื้อความหรือหัวข้อ
14 Deep web
- คือเว็บไซด์ที่เข้าถึงได้ยากหรือถูกซ่อนไว้
- มี 3 ชนิดด้วยกันเช่น
Private sites เป็นพวกเว็บส่วนตัวที่ไม่มีใครลิงค์มาหา หรือเว็บทีต้องมีการล็อกอินจึงจะเข้าไปได้
Form results เว็บไซด์ทีเป็นผลลัพธ์ที่มาจากการประมวลผล เช่นใส่บางข้อมูลเข้าไปก็มีการประมวลผลบางสิ่งออกมา
Scripted pages เช่น เว็บพวกสคริปต่างๆ หรือแฟรช
15 sitemaps
- ไซด์เมพ จะประกอบได้ด้วยลิสต์ต่างๆเช่น URL และข้อมูลที่เกี่ยวกับ URL นั้น ๆ ดังเช่น เวลาในการแก้ไขปรับปรุง และความถี่ในการปรับปรุง
- เจ็นโดย admin
- บอกคลอเลอร์เกี่ยวกับว่าควรจะมาดึงเมือ่ไหร่อีก

16 sitemap example
17

34
- บางเนื้อหาที่เหมือนกันมากๆ อยู่ที่ต่าง URL เช่นมีการก๊อปปี้มาจากที่อื่นมาเปะทีเว็บเราหรือ มีหลายเวอร์ชั่น
o เกิดสแปมที่เขียนเนื้อหาเราไปไว้ในหลายที่ mirror site เป็นคนละ URl เช่นที่นึงดาวที่นึงจะขึ้นมาแทนจึงทำให้มีการซ้ำเนื้อหาสูงมาก
o เช่น ร้อยหน้ามีประมาณ สามสิบเปอร์ที่ซ้ำกับหน้าอื่น
- ถ้าเราปล่อยไว้จะทำให้คลอเลอร์ทำงานหนัก การสร้างดัชนี และการค้นหา
o เนื้อหาที่ซ้ำนี้ไม่มีประโยชน์เลย ในgoogle ไม่ค่อยเจอ
แต่ก็ยังมีบ้างเช่นข่าวดาราเช่นคอนเท็นเหมือนกันเลยแต่ก็ยังแสดงมาต่างUrl ได้แต่ถ้าต่างกันนิดหน่อยก็หลุดมาได้
35 .
- ถ้ามีหน้าเหมือนกันทุกหน้าก็จะหาได้ง่าย
- Checksum เป็นวิธีการบวกจำนวนไบต์ภายในเอกสารนั้นๆ แต่บางก็มีปัญหาที่บางที่อาจมีตัวอักษรเท่ากันแต่ใช่คนละตัวก็ได้
- ฟังก์ชั่นที่เช็ค cyclic redundancy check มีขึ้นเพื่อตรวจสอบว่ามันเหมือนกันเหรือเปล่า เช่นดูว่าตัวอักษรทั้งหมดมันเหมือนกันหรือเลป่า เช่นเราเก็บตัวแปรสตริงมาแล้วอีกเว็บมันมีเนือ้หาคล้ายกับและสตริงเท่ากันก็น่าจะเป็น duplicate
- บางเว็บที่มีเนือ้หาเหมือนกันก็สามารถยุบมารวมกันได้
36
- ปกติในหน้าเว็บจะมีอะไรมากมายไม่ว่าจะเป็นลิค์หรือภาพบางที่ไม่มีความสำพันธ์กับเนื้อหาที่เราไปคลอมาเช่นเว็บข่าว เนื้อหามีนิดเดียวทีเหลือเป็นพวก คอมเม็น โฆษณา เป็นต้น ส่วนที่ไม่เกี่ยวข้องเราจะถือว่าเป็น noise และไอ้พวกนี้มันจะส่งผลในแง่ลบต่อการเรียงลำดับต่อผลการค้นคืน
- เราต้องกำจัดหรือลดความสำคัญของมันลงมา
37
- พวก main content block จะเก็บในการทำ index แต่ส่วนที่เหลือก็เอาไปใข้ในการลิงค์ต่อไปเช่นพวกลิงค์ต่างๆ
38
- เราสามารถเช็คได้ว่าส่วนไหนเป็นส่วนเนื้อหาโดยการดู ความถี่ของแท็กเช่นเนือ้หาจะมีแค่แท็ก div หรืออะไรก็ตามเท่านั้ นแต่ถถ้าเป็นพวกลิงค์หรือเป็นรูปภาพหรือเมนูจะมีเนื้อหานิดเดียวก็เจอแท็กปิดแล้ว tokel count คือคำธรรมดาที่ไม่ใช่แท็ก
- Text area คือส่วนที่มีข้อความปริมาณมากๆในหน้านั้น
39
- พวกสมการในการหาหน้าก่อนหน้า
- นับว่ามี token มีก็เพิ่ม 1 ถ้าเจอแท็กก็เพิ่มแท็ก 1
- ดังสมการ
40
อีกวิธีให้ดูที่ DOM structure ดูว่ามีอะไรทีเป็นแท็กหรือ css ของเนื้อข่าวบ้างเช่น ข่าวอยู๋ใน
- ซึ่งวิธีการนี้เหมาะสำหรับการคลอเฉพาะเว็บเท่านั้น
- Google ไม่ได้ตัดทิ้งไปทั้งหมดอะไรทีเป็นก้อนๆก็เก็บไว้
41
- คือกระบวนการที่ใช้ในการจัดเรียงเอกสารก่อนนำไปทำ index
- ทำไมต้องทำ
o เพื่อความถูกต้องของสตริงเช่น ถ้าเราไม่ทำ process นี้ก่อน เวลาหา A B จะได้เท่ากับหา B A ซึ่งตามหลัก IR ต้องเท่ากัน ซึ่งถ้าไม่ดีดังนี้ก็จะส่งผลให้การค้นคืนไม่ดีเพียงพอ
o คำทุกคำไม่ได้มีค่าเท่ากันในการค้นหาข้อมูล เช่น บางเอกสารมี A เยอะมาก B กลาง และ D น้อยๆ ถ้าค้นคืน A และ B จะต้องจำความสำคัญไม่เท่ากันคือ B น่าจะสำคัญกว่า
o หรือคำในบางภาษาเช่น จีนหรือเกาหลี ถ้ามีการสลับที่ก็มีความหมายต่างกันและไม่มีช่องว่างระหว่างคำ ทำให้เราไม่รู้ว่าเรื่มที่ใดสิ้นสุดที่ใด ซี่งต้องมีการทำการประมวลผลข้อความ
42
- เราสามารถคาดการความถี่ของคำคำหนึ่งที่มีในเอกสารนั้นได้เช่นมีคำไหนมากก็น่าจะเน้นหนักไปทางนั้น ซึ่งขึ้นกับ retrieval ทีเราใช่ด้วยซึ่เรียกว่า text statistics
- ส่วนใหญ่มันขึ้นอยู่กับข้อมูลทางสถิติของคำ เช่นคำที่เป็นคำที่สำคัญมักจะเกิดขึ้นบ่อยแต่คำคำนั้นไม่ได้มีความถี่สูงสุดในคลังเอกสารก็ได้ เช่นทุกเอกสารมีชื่ออาจารย์หมดแต่เราก็ไม่สามรรถนำมาจำแนกเอกสารได้
43
- การกระจายตัวของเอกสารเช่นพวก การกระจายตัวแบบแบ้ ซ้ายหรือขวาคำว่า แบ้ คือ skew
o ถ้าดูในเรื่องของการกระจายตัวในเอกสารหนึ่งมันจะแบ้ขวา
o คำบางคำมีความถี่สูงมากแต่คำบางคำจะไม่สูงเช่น the to ซึ่งมักจะเกิด 10% ของเอกสารฃ
- ซิฟลอร์
ทำโดยการเอาลำดับของคำ คูณกับ ความถี่ เช่นคำที่มีความถี่สูงจะอยุ่ก่อนคำที่มีความถี่ต่ำๆจะอยู่หลังๆ
44
- เช่นคำที่มีความถี่สูงจัดๆจะมีความถี่ไม่เกิน 10% เช่นพวก the to
45
- รวบรวมเอกสารที่เกี่ยวกับข่าวแล้วเอามาดูค่าทางสถิติของมันจะเห็นว่า คำบางคำแม้มีความถี่สูงแต่ก็ไม่มีความหมาย
46 การตัดคำ
- โดยการตัดแบ่งเป็นคำๆ
- ในสมัยก่อนนับตัวอักษร 3 ตัวนับเป็น 1 คำ ตัดแบบ tropical – tro – rop – opi – pic – ica – cal
47
ตัวอย่าง
48
- คำบางคำที่เป็นตัวอักษรเล็กตัวสองก็อาจจะสำคัญเช่น window xp ถ้าตัด xp ทิ้งก็จะเสีย

WE608 Search Engine Class 2

April4

search engine class 2
March 25th, 2010 ต่อจากคลาสที่แล้วนะครับ คลาสนี้ เชนนั่งจดในคอมเลย งานนี้เลยได้มาเร็ว ก็ขอบคุณเชนกันด้วยล่ะกันครับ

Text Transformation
ทำหน้าที่เปลี่ยนแปลงเอากสารที่ดึงมาให้อยู่ในรูปแบบที่พร้อมสำหรับทำดัชนี
Index Creation มีหน้าที่สร้างโครงสร้างข้อมูลดัชนีที่เป็นตัวแทนเอกสาร
Index คือตัวแทนของดัชนีที่เป็นเอกสารเหล่านั้น
Query Process ประกอบด้วย
• User interaction
– ส่วนตอบโต้กับผู้ใช้ แสดงผลขอกระประมวลผลของการค้นคืน
* google มีหน้าตาให้ user ใช้ มีหน้าที่ไว้สำหรับดึงข้อมูลลงมา (อาจเก็บเป็นแครช แบบที่ google ทำ)

• Ranking
– มีหน้าที่เรียงลำดับผลการค้นคืน * ทำหน้าที่เสร็จแล้วส่งให้ User interaction

• Evaluation
– ทำหน้าที่ประมวลผลขอการค้นคือ เช่น ผู้ใช้ คลิกที่ไหนบ้าน หลังการค้นคืน 1 แอบเก็บ (implicit) หรือ explicit ถามตรง ๆ แล้วนำไปเก็บไว้ที่ log data จากนั้นนำข้อมูลจาก log ไปปรับปรุง
*ดูพฤติกรรมเพิ่มวัด effectiveness and efficiency

• Details: Text Acquisition วิธีการที่จะทำให้ได้มาจะใช้ Crawler
• Crawler ไปดุแล้วดึงเอกสารและดาวน์โหลดมาเก็บไว้ ไม่จำเป็นต้องใช้ดึงเว็บอย่างเดียว
• *google ใช้ว่า google bot หรือ web spider ซึ่งหมายถึง crawlar
ไม่จำเป็นต้องดึงเว็บอย่างเดียว อาจดึงเอกสารก็ได้ จะเป็น ภายใน องค์กรหรือ เครื่องตัวเองก็ได้
เว็บ Crawler จะทำการ link ต่อจากหน้าเก่าทำให้สามารถทำงานได้ต่อไปเรื่อย ๆ ในการที่
– Web crawlers follow links to find documents จะต้องระวังเรื่องประสิทธิภาพด้วย เพราะ จะได้สามารถ ครอบครุม มากที่สุด และจะต้องมีความสามารถในการอัพเดด หน้าด้วย
• Single site crawlers for site search จะต้องมีความสามารถพิเศษ ว่าจะไม่ cowler ไปนอกเว็บไซต์
• Topical or focused crawlers for vertical search เน้นเอกสารเฉพาะเรื่องใดเรื่องหนึ่ง
• Document crawlers for enterprise and desktop search สามารถควบคุมได้ เพราะสามารถควบคุมเองได้ในองกร
Feeds
Conversion
Document data store
– Stores text, metadata รายละเอียดข้อมูล(อัพเดดเมื่อไหร่,ขนาด) , and other related content for documents
– Metadata คือ ข้อมูลที่เกี่ยวข้อกับตัวเอกสาร
– Other content คือพวก links, anchor text
– Provides fast access to document contents for search engine components ทำให้ค้นหารวดเร็ว
เพิ่มเติม

เพราะฉนั้น การสร้าง Document data store อาจใช้ relational database
การใช้ relational database เพื่อใช้เก็บสำหรับการเตรียม การสร้างดัชนื และ แสดงผลการค้นคืนให้เร็วขึ้น และ เอาไว้แสดงผลผ่านแครชในกรณีที่เข้าถึงไม่ได้

Text Transformation การปรับเปลี่ยนเอกสาร ให้เก็บในรูปแบบดัชนี

http://naist.cpe.ku.ac.th/wordcut/

• Parser
• Processing the sequence of text tokens in the document ทำหน้าที่ประมวลผลข้อความ ในเอกสาร
• to recognize structural elements หาโครงสร้างของเอกสาร
• e.g., titles, links, headings, etc.
– Tokenizer recognizes “words” in the text ในภาษาอังกฤษ tokens คือ word
• must consider issues like capitalization, hyphens, apostrophes, non-alpha characters ตัวเรื่องหมายประหลาด ๆ, separators
• Markup languages such as HTML, XML often used to specify structure
– Tags used to specify document elements จะอ่านข้อมูลผ่าน tag
– E.g.,

Overview
• Stopping ในการเตรียม เอกสารควรตัดคำที่เกิดขึ้นมาก ๆ เช่น “and”, “or”, “the”, “in” แต่การตัด คำพวกนี้ไป อาจจะทำให้เกิดปัญหาในบางครั้ง เช่น สมมุติเรา ค้นหาเป็น วลี ถ้าเกิดตัด Stop Word อาจทำให้หาไม่เจอได้ *ในปัจจุบัน SE ไม่ตัด Stop Word แล้ว
• Stemming การหารากศัพท์ของคำ ๆ นั้น
– Group words derived from a common stem
• e.g., “computer”, “computers”, “computing”, “compute”
– Usually effective จำทำให้มีประสิทธิผมมากขึ้น , but not for all queries ปัจจุบัน ก็ไม่เวิกค์ เช่น คำว่า apple กับ apples
Apple คือ เครื่อง mac
Apples คือ ผลไม้

• Link Analysis (การวิเคราห์ link)
– ใช้ประโยชน์ links and anchor text ในเว็บ สมารถทำให้รู้ว่าเว็บเป็นที่นิยม โดยดูจาก link จากเว็บอื่นมาที่เว็บ ถ้ามี link เข้ามาที่เว็บไหนมากกว่าจะทำให้รู้ว่าเว็บไหนเป็นที่นิยม (มีค่าเป็น 0-10)
– Anchor text สามารถใช้เป็นตัวแทนหน้าที่เป็น link ได้
– ส่วนใหญ่จะใช้ได้ในการค้นหาบนเว็บไซต์ อย่างเดียว
• Information Extraction ใช้ระบุว่าคำที่อยู่ใน คราสนั้น เป็นคำอยู่ในประเภทอะไร ส่วนใหญ่จะใช้ ร่วมกับ named entity recognizers
• named entity recognizers จำใช้กำหนดว่าคำไหนเป็นชื่อคน ชื่อบริษัท ชื่อสถานที่ หรือเป็นชื่ออะไร
• Classifier ใช้จัดกลุ่มเอกสารเพื่อให้รู้ว่าเอกสารนั้นเกี่ยวกับเรื่องอะไร กำหนด topics, reading levels, sentiment, genre
• Use depends on application ขึ้นอยู่กับความต้องการของผุ้ใช้

• Document Statistics ใช้สถิติมาช่วย เช่น ดูความถึ่ เพื่อใช้เรียงลำดับของผลการค้นคืน
• Weighting การให้ค่าน้ำหนัก เช่น
ตัวอย่างแรก
• เอกสารที่ มีชื่อ อ.วรสิทธิ์ 10
• เอกสารที่ 2 มี 1000 เอกสาร
ตัวอย่างที่ 2
• เอกสารที่ 1 มีชื่อ อ.วรสิทธิ์ 10 มี 20 คำ 10/20 = 0.5
• เอกสารที่ 2 มี 1000 เอกสาร 5000 คำ 1000/50000 = 0.20

tf.idf คำ ๆ นั้นมีอยู่ในเอกสารกี่ฉบับ *รอวิธีการคำนวน

Inversion การสร้าง ดัชนีแบบ Inver (เอาดัชนีเป็นตัวตั้ง) ดัชนี A = 1,2,3 B =0 C = 2 ,5 ถ้าอยากได้เอกสารที่มี A และ C จะได้เอกสารหมายเลข 2 จำทำให้การค้นคืนเร็วขึ้น *ข้อระวังถ้าเกิดการอัพเดด การเก็บเอกสารประเภทนี้ นิยมจะทำเป็น zip เพื่อลดขนาด
• Index Distribution เก็บ index ไว้หลาย ๆ ที่เผื่อให้การค้นมันเร็วขึ้น ข้อดีอีกอย่าง ถ้า บาง site down ก็แค่ค้นคืนไม่ได้เฉพาะ site นั้นไม่ใช่ทั้งหมด
• ผลลัพท์ของการค้นคืนจะต้องดูที่ดัชชนีที่อยู่ใกล้
• P2P ……………

User Interaction การค้น
Query input
• รับคำแล้ว paser คำด้วยนะทำหน้าที่ต้องงานเหมือนกับตอนที่ตอนสร้างดัชนี
• ส่วนใหญ่ เว็บ รับมาแล้วก็ค้นเลย แต่ถ้าในรูปแบบอื่น ๆ ก็อาจมีการปรับการรับข้อมูลเข้า
Query language ใช้ในการอธิบาย ในการค้นหาข้อมูล เช่นการใส่ + ระหว่างการค้นหา (ถ้าต้องการค้นหาข้อมูลเอกสารที่มีข้อมูลทั้งหมดอยู่)

Query transformation การปรับเปลี่ยน (Query) มีหน้าที่ปรับปรุง Query ที่ใส่เข้ามาให้ดีขึ้น โดยมีการใช้เทคนิคมาช่วย เช่น google ช่วยในการตรวจสอบตัวสะกด ว่าถูกหรือเปล่า
Query expansion ขยายขอบเขตของคำนั้น และ relevance feedback ดูว่าผลการค้นคืน ว่าผุ้ใช้คลิกมั้ย ถ้าไม่อาจต้องปรับปรุง (เพิ่มคำ)

• Results output
– Constructs the display of ranked documents for a query
– Generates snippets to show how queries match documents
– Highlights important words and passages
ทำการ Highlights คำที่เราค้น
– Retrieves appropriate advertising in many applications
– ดึงโฆษณาที่เกี่ยวข้องขึ้นมา
– May provide clustering and other visualization tools

Ranking ถือว่าเป็นหัวใจสำคัญ สุดๆๆๆๆๆ ของการทำ IR และ SE โดยใช้วิธี scoring คิดเป็นคะแนนความเหมือน (ขึ้นอยู่กับวิธีการเรียงลำดับที่เราเลือกใช้) คะแนน มากอยู่ ต้น ๆ คะแนน น้อยอยู่ท้าย แต่ขึ้นอยู่กับ การวิธีการคำนวนคะแนน
• Performance optimization
การคำนวน จะต้องนึกถึงการออกแบบด้วยว่าวิธีการนั้นมีประสิทธิภาพหรือเปล่า ตัวอย่าง ดูทีละเทอม หรือ ดูทั้งเอกสารเลย
• Distribution
• การกระจายในการค้นไปยังหลาย server
• มีตัวกลางกระจาย แล้วนำมารวมกัน
• ดาวน์โหลดเอกสารไว้ที่แต่ละ server แล้วค่อยมารวมตอนถูกค้นคืน

Evaluation ผลการค้นคืน (ดี หรือ ไม่ดี)
• Logging เก็บบันทึกการค้นคืน และ เก็บการคลิกผลการค้นคืน เพื่อนำไปปรับปรุงคุณภาพ สิ่งที่ใช้ คือ
Query logs ใช้คำอะไร and clickthrough data คลิกผลลัพท์อะไรบ้าง
• Ranking analysis
ดูลำดับการคลิกการค้นคืน เพื่อมาปรับวิธีการเรียงลำดับ *ควรจะทำให้ได้อย่างที่ผู้ใช้ต้องการ และดูเรื่องของประสิทธิภาพในการแสดงผล เช่น แสดงผลเร็วมั้ย ถูกต้องหรือเปล่า

How Does It Really Work?
เราจะเลือกเฉพาะทางเลือกที่สำคัญ ที่เขาใช้กัน และสามารถนำไปใช้งานได้ ตัวอย่าง จะเลือกอธิบายเรื่องที่สำคัญ
หลังจากนี้ดูได้เป็นแลบครับ

WE608 Search Engine Class 1

April4

มาแล้วครับ หลังจากที่ผมทำบทความหาย อิ อิ จริงๆน่าจะเกิดจากการที่ผม copy บทความแล้วเอาใส่ โน๊ตแพด เสร็จแล้วชะล่าใจ คือเปิดโปรแกรมทิ้งไว้ พอข้ามวันก็ปิดโปรแกรมโดยไม่ได้เซฟ!!!! ทำเอาเครียดครับงานนี้ ถ้าต้องทำใหม่ นั่งๆอยู่ก็บรรลุว่า google มีการส่งบอทมา craw เวบไว้ แล้วเก็บ cache (นี่ตอบแบบที่เรียนมา) ผมก็เลยลอง search ดู แล้วก้เจอไฟล์จริงๆ รอดตายไป
ก็มาดูกันครับของเก่า คาบเรียนที่1 (ตอนนี้เราเรียนไป5 ครั้งแล้ว)

คลาสที่หนึ่ง อาจารย์เริ่มโดยบรรยายเกี่ยวกับคอส วิชาที่เรียน อันนี้แน่นอนอยู่แล้ว ข่าวดี เทอมนี้ไม่ต้องแปลบทความ เพราะดูเหมือนจะมีเวลาน้อย แต่ยังคงมีการบ้าน ซึ่งมีคะแนน 20 % จากนั้นก็จะเป็นโปรเจค ที่เปิดกว้างในเรื่องของหัวข้อ อาจารย์หวังที่จะให้ทำ ในสิ่งที่เราจะเอาไปต่อยอดได้ ไม่อยากให้ทำแล้วทิ้ง โดยเป็นกลุ่มที่มีขนาดราว 2-3 คน แต่คิดว่า ถ้าจะเอาไปต่อยอด มีหวังได้ทำเดี่ยว เพราะหัวข้อ อาจเป็นเรื่องที่ตัวเองสนใจ หรือส่วนตัว แนะนำว่าอาจจะทำคนเดียวแต่เรื่องคล้ายๆกันน่าจะดีกว่า ทำกลุ่ม สำหรับคนที่ไม่ได้ทำงานประจำอ่ะนะ งานเดี่ยวเป็นประโยชน์กะตัวเองมากกว่า เวลาที่เรียนค่อนข้างมีน้อย เพราะเป็นซัมเมอร์และ อเก่งลาบวชด้วย แล้วก็เจอ เรื่องของ สงกรานต์อีก งานนี้คงต้องมีชดเชย ซึ่งอาจจะเลื่อนเวลาเรียนเข้ามา เนื้อหาเรื่องการเรียนสามารถอ่านได้ใน รายละเอียดวิชา อ้อลืมบอก โปรเจคนี่ 40 % และสอบไฟนอล 40%(ไม่มีมิดเทอม) และส่งโปรเจคหลังสอบไฟนอลครับ

ก็มาเข้าหัวข้อบรรยาย วันนี้เราเรียนไป22 แผ่นสไลด์ 6 หน้าชีท ครับ ได้ประมาณครึ่งนึงของบทแรก สามารถขอส่วนที่อัดเสียงไว้ที่ X ครับ

WE 608 Modern Information Retrieval Systems and Search engines

เป้าหมายการเรียน
-เพื่อช่วยให้เราเข้าใจ SE (ผมย่อนะ search engine) ประเมิณ เปรียบเทียบ และปรับปรุงสำหรับแอพลิเคชั่นที่ต้องการ ต้องให้รู้ว่า Search Engine คืออะไร,มีส่วนประกอบอะไรบ้าง และ ประเมินอย่างไร
-เพื่อให้เห้นภาพรวมกว้างๆ ของปัจจัยสำคัญของ การค้นคืนข้อมูล(IR) และ SE ซึ่งในที่นี้รวมไปถึงการใช้โมเดลต้นแบบในการค้นคืน และทิศทางการวิจัยIR ในปัจจุบัน

การค้นหา(search) และ การค้นคืนสารสนเทศ(IR-Information Retrieval)-การค้นหาในเวบเป็นกิจกรรมหลักที่ทำกันทุกวัน ของคนทั่วโลก เราค้นหากันทุกวัน หาข้อมูลอะไรก็ใช้ search engine
-การค้นหา และการติดต่อสื่อสาร เป็นจุดประสงค์หลักของการใช้คอม
-โปรแกรมเดวนี้รวมการค้นหาเข้าไปด้วย เช่น windows->desktop explorer หรืออื่น เช่นในอีเมล ก็สามารถหาได้
-IR เกี่ยวข้องกับการทำวิจัยมากมาย

IR คืออะไร
IR เป็นสาขาวิชาที่เกี่ยวข้องกับ
1.โครงสร้าง structure
2.การวิเคราะห์ analysis
3.การจัดรูปแบบ organization
4.การจัดเก็บ storage
5.การค้นหา search
6.การค้นคืน retrieval
ของสารสนเทศ of information (นิยามโดย salton,1968)
-คำนิยามทั่วไป สามารถนำไปใช้กับ ข้อมูล และการโปรแกรมการค้นหาได้หลากหลาย
-เป้าหมายหลัก ของ IR ตั้งแต่ยุค 50 คือการค้นหาเอกสาร(document)และข้อความ(text)เท่านั้น

อะไรคือ Doument -เอกสาร
ก็คือ เวบเพจ หน้าเวบ อีเมล หนังสือ ข่าว เอกสารการวิจัย ข้อความtextข้อความใรโปรแกรม word ,powerpoint เอกสารPDF กระทู้เวบบอร์ด สิทธิบัตร Instant messaging QA FAQs
ซึ่งจะมีคุณสมบัติทั่วไปแบบนี้
-มีเนื้อหาส่วนสำคัญ เป็น text
-มีโครงสร้าง หัวข้อ ชื่อผู้แต่ง วันที่ หัวเรื่อง คนส่ง
Doc สามารถเป็นได้ทุกอย่าง ถ้าเราจะค้นคืน ไม่ใช่แค่เอกสาร ส่วนโครงสร้างจะเป็นส่วนที่เราสนใจ ช่วยในการค้นคืน

เอกสาร กับ ข้อมูลในฐานข่้อมูล(Documents vs. Database Records) ต่างกันอย่างไร
ในการที่เราจะใช้ข้อมูลในบานข้อมูลได้ เราจะต้องรู้ โครงสร้างของมัน รู้ว่ามีการเก็บค่าอะไรบ้าง Record ที่เก็บในฐานข้อมูลมี field ต่างๆที่กำหนดมาชัดเจน เช่น บัญชีธนาคาร รหัสบัญชี ชื่อ เลขประจำตัว วันเกิด
ซึ่งง่ายในการเปรัยบเทียบในการค้นคืน มีเนื้อหาที่ชัดเจน
ในขณะที่ แบบDocument -text จะยากกว่า

Documents vs. Recordsยกตัวอย่างในการค้นคืนในดาต้าเบส
-การหาบัญชีที่มีเงินมากกว่า 50000$ ที่สาขาในเมือง .. จังหวัด..
-การค้นคืนง่าย อันไหนตรงก็จบ
ตัวอย่างการค้นคนผ่าน search engine
-เป็นข้อความ เช่น ธนาคาร เรื่องอ้อฉาว ในภาคตะวันตก
-ข้อความก็จะถูกเปรียบเทียบกับทั้งบทความ อาจจะตรงกับเรื่องที่หา หรือไม่ตรงก็ได้

การเปรียบเทียบ text
หัวใจของระบบ IR คือ ก่ารเปรียบเทียบค่าค้น และเปรียบเทียบ เนื้อหาเอกสารว่าเหมือนมาก หรือน้อยอย่างไร
-แต่ค่าเหมือนอย่างเดียวก็ไม่พอ
คำที่มีความหมายเดียวกันก็อาจจะเขียนแตกต่างกันหรือ ใช้แตกต่างกัน
เช่น แทนที่ จะใช้คำ “ธนาคาร เรื่องอื้อฉาว ในภาคตะวันตก” ก็ใช้ ผู้จัดการ ขโมย เงิน ธนาคาร แทน อาจได้เนื้อหาที่ตรงกว่า บางข่าวก็ใช้คำนี้ หรือ ประโยคนี้ดีกว่า หรืออย่างคำว่า กิน กับ รับประทาน เป็นต้น

Dimensions of IR มุมมองหรือมิติของไออา
ไออาเป็น อะไรมากกว่า text เป็นมากกว่าการค้นหาในเว็บ
“ในอดีตมันเป็นแค่ text แต่ในปัจจุบันมันมากกว่านั้น แต่อย่างไรก็ตามการค้นหาข้อความเป็นหัวใจหลักของ ไออา”
คนใช้ ไออา ในการทำงานกับหลายสื่อไม่ใช่แค่เอกสาร แต่เป็น เพลง เสียง วีดีโอ
*Vertical search เป็นการค้นหาแนวลึก
ตัวอย่าง อ้น -> พ่อแม่ชื่อ
Other media โปรแกรมใหม่ ๆ จะใช้สื่อต่าง ๆ เยอะขึ้น ก็เหมือนกัน text แต่ content ต่าง ๆ จะอธิบายได้ยากกว่า หรือ เปรียบเทียบได้ยากกว่า บางครั้ง เราก็ใช้ text ในการอธิบายมัน
ตัวอย่าง การแท็คช่วยอธิบายรูป
Dimenstions of IR

Content Applications
Text = ข้อความ Web Search = การค้นหาในเว็บ
Image = ภาพ Vertical Search = การค้นหาเชิงลึก(ค้นหาสิ่งใดโดยเฉพาะ)
Video = วิดีทัศน์ Enterprise Search = การค้นหาข้อมูลภายในเครือข่ายองค์การ (intranet)
Scanned docs = เอกสารผ่านการแสกน Desktop Search = การค้นหาในเครื่อง
Audio = เสียง Forum Search = การค้นหาในกระทู้ หรือ BLOG
Music = เพลง P2P = การค้าหาระหว่างเครื่อง (peer to peer) ตัวอย่าง บิตเทอร์เรน
Literature Search = การค้นหา Research paper ตัวอย่าง google schoolar / Cite ULIKE.org

IR Taskงานของ IR
Ad hoc Search = การค้นหาแบบ พิเศษ (การหาเอกสารที่เกี่ยวข้อง)
Filtering = การค้นหาโดยการหาแบบ กรองข้อมูล ตัวอย่าง Adaptive web ดูโปรไฟล์ ของคนที่จะใช้งานและระบบจะจัดหาเอกสารที่คิดว่าน่าจะชอบ ตัวอย่าง web site ข่าว
Classification = การจำแนกแยกประเภท การจัดกลุ่ม โดยระบุเป็น label ยกตัวอย่าง เว็บ http://Clusty.com
Q&A = การถามตอบ มี 2 มุมมอง คือ IR และ QA
IR = ค้นหาด้วยคำถาม เอาคำถามมาทำดัชชนีที่เกี่ยวข้องกับคำถาม คำตอบจะมีหลายอัน
Q&A = จะเป็นการ ประมวลผลเพื่อหาคำตอบ แล้วสรุป มาเป็นคำตอบเดียว

ประเด็นสำคัญ ใน IR
Relevance ความเกี่ยวเนื่อง
ความเกี่ยวเนื่องคืออะไร
ผลลัพธ์ของการค้นหาถูกต้องตรงกับที่ค้นหาหรือไม่ โดยดูที่เอกสาร ว่ามีข้อมูลที่ผุ้ใช้หาอยู่ เช่น google ประเมิน โดยการ คลิกเข้าไปดู มีหลายปัจจัยหลายอันในการประเมิน ได้แก่งานที่ทำอยู่ (Task)
เนื่อหา (context) ความใหม่สดของข้อมูล (no velty)
รูปแบบ (style)
Relevance มี 2 รูปแบบ
1. Topical Relevance (same topic) หัวข้อเดียวกับประเมินผลด้วยการวัดจากหัวข้อเดียวกัน
2. User Relevance มองผู้ใข้เป็น เกณฑ์ เช่น ผู้ใช้ ค้นหาด้วย Search engine แล้วบอกได้ว่าตรงกับที่ค้นหาหรือไม่
- การที่จะบอกว่าเอกสารเกี่ยวข้องกับสิ่งที่ค้นหาใช้ผ่านโมเดล โดยดูจาก tipical หรือ user relevence
- Ranking Algorithms วิธีการจัดลำดับ จะขึ้นอยู่กับ retrieval models
Evaluation