Семантична прилика между думи

Материалът в тази статия е преведен от научния труд „Sentence Similarity Based on Semantic Nets and Corpus Statistics“ на известните в областта на изкуствения интелект, математика и размити множества Yuhua Li, David McLean, Zuhair A. Bandar, James D. O’Shea, and Keeley Crockett, излязъл през август 2006 година.

words_tree

Благодарение на успеха на множество изчислителни лингвистични проекта, семантичните бази от знания са лесно достъпни, като примери са WordNet , Spatial Date Transfer Standard , и Gene Ontology. Тези бази се състоят от йерархично структурирани модели за определена област. Тази йерархична структура е важна за определяне на семантично разстояние между думи.

Ако вземем две думи w1 и w2 ,ние трябва да намерим семантичната прилика s(w1,w2). Можем да направим това с лексикален анализ както следва: думите са организирани в синонимни множества в базата от знания със семантични връзки със други синонимни множества. Следователно ,можем да намерим първия клас в йерархичната семантична мрежа ,който съдържа търсените думи. Един директен метод за изчисляване на близостта е да се намери минималната дължина от пътя, който свързва две думи. Например, най-краткия път между ‘boy’ и ‘girl’ на фигура 3 е boy-male-person-female-girl , минималния път е 4, синонимното множество на ‘person’ съдържа думите ‘boy’ и ‘girl’, докато минималната дължина на пътя между ‘boy’ и ‘teacher’ е 6. Можем да кажеме ,че ‘girl’ е по-близка дума до ‘boy’ отколкото ‘teacher’ до думата ‘boy’. Този метод работи за ограничени медицински семантични мрежи.

Този метод може да е по-малко точен за големи и по-общи мрежи. Например, минималната дължина между ‘boy’ и ‘animal’ е 4, по-малко отколкото между ‘boy’ и ‘teacher’, но, интуитивно, ‘boy’ е по-близка дума до ‘teacher’ отколкото до ‘animal’. „Директния път“ метод трябва да бъде модифициран с използване на повече информация от йерархичните семантични мрежи. Думите от по-високо ниво имат по-обща семантика и по-малка близост между тях, докато думите от по-долните нива имат по-конкретна семантика и повече близост т.е. трябва да се вземе дълбочината на думата.

Предполагаме, че близостта s(w1,w2) между две думи w1 и w2 е функция от дължината на пътя и дълбочината, както следва:
s(w1,w2) = f (l,h) , където l е най-късия път между w1 и w2, h е дълбочината в йерархичната семантична мрежа. Може да се пренапише с две независими функции :
s(w1,w2) = f1(l) * f2(h) .

Ако за една и съща дума използваме близост 1 и за напълно далечни думи – 0 , тогава интервала на близост е [0,1].Интуитивно е ,че двете функции не са линейни функции. Когато дължината на пътя намалява до 0 , близостта монотонно отива към 1 , и когато дължината на пътя се увеличава безкрайно , близостта монотонно отива към 0.

За функцията f1 имаме:
f1
където α е константа. Стойността на f1 е в интервала [0,1] .

За функцията f2 имаме :
f2
където β>0 е изглаждащ фактор.
В заключение се предлага формулата за семантична прилика между две думи :

s
където α Є[0,1] , βЄ(0,1] .

Техните оптимални стойности зависят от базата от знания и могат да се определят с помощта на двойки думи със стойности на близост определени от човек. За WordNet оптималните стойности на тези параметри са α=0.2 и β=0.45 .

Advertisements
Posted in Search Engine | Leave a comment

RSS

Какво е RSS и как да го  добавя в сайта си?

 Image

Не е нужно да следиш непрекъснато любим сайт , за да разбереш дали има нова публикацияRSS  позволява да се абонираш за новини и информация от интернет страници.

RSS е съкращение от Really Simple Syndication (наистина опростено публикуване), а в самото начало Rich Site Summary . Това е XML базиран формат за разпространение на новини, заглавия и съдържание.

От една страна са програмистите, които трябва да създадат така наречения  RSS канал (RSS често е наричан също News feed или RSS feed) към сайта си и да отбелязват новото съдържание в него, и от друга страна са потребителите, които трябва да се абонират за новини от този сайт и да  използват RSS четец , през който да  могат да  виждат тези новини.

Какво е RSS  четец?

 

Това е сайт или програма, която събира и подрежда RSS поток (RSS feed).

RSS четците са достъпни за  различни  устройства и операционни системи.

Всеки ден четецът търси RSS документи в регистрираните уеб сайтове, проверява линковете, и изобразява информация за feed-а, така че RSS клиентите (също наричани четци) да могат да намират  документите, които  потребителите търсят.

Популярни RSS четци са:

  • Google Reader;
  • Bloglines;
  • Newsgator;
  • RssReader  и др.

         Mozilla Firefox има вграден RSS четец. Ако една страница има RSS feed-ове, отгоре в адрес бар има rss  икона.  Като се натисне се появяват връзки, за които потребителят може да се абонира.

Имам RSS четец. Сега какво?

 

Кликни на бутона RSS или XML   до RSS feed-а, който искаш да четеш. Копирай линка от браузъра в твоя RSS четец – и готово. Преди това обаче трябва да довавите четец към браузъра си . Например от този линк можете да добавите google reader за Chrome:

https://chrome.google.com/webstore/detail/rss-feed-reader/pnjaodmkngahhkoihejjehlcdlnohgmp

Как работи RSS?

 

Можете да пишете сами своите RSS потоци. Това не е трудно. Или да изберете програми или сайтове ,които помагат при писането на feed-ове.

Аз използвам RSS Creation Software и по-точно RSS Feed Creator. Можете да го намерите от този адрес: www.rsscreation.com/rss-creation-software.php

Сваляте го на вашия компютър и го инсталирате. Отваряте нова  feed и отговаряте на въпросите. Много бързо имате валиден .xml файл,който представлява  вашия rss канал.

За да направите своя първи канал сами:

  1. Трябва да се създаде файл с разширение .rss или .xml . RSS е писан на XML.  Така че, това е текстов файл  с много опростено съдържание и няколко задължителни тага.
Например: 
 <?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
  <title>Mathematica6.org</title>
  <link>
http://www.mathematica6.org
</link>
  <description>Free math tutorial</description>
  <item>
        <title>Math</title>
        <link>http://www.mathematica6.org/re6eni_zada4i</link>
        <description>Solved problems</description>
  </item>
</channel>
</rss>

 

  1. Качваме RSS файла в уеб директорията на сървъра, където се намира нашия сайт.
  2. Трябва да валидирате файла. Тук ще дам адрес на много валидатори: www.webdesign.about.com/od/rssvalidators/RSS_Validators.htm

Аз използвам www.webdesign.about.com/od/validators/l/bl_validation.htm#rssvalidator

Така създадения канал трябва да се публикува.

  1. Слагаме бутоните “RSS” или “XML” на страницата, където искаме да представим  RSS (например на началната страница). Добавяме към бутона хипервръзка , която да препраща към .rss файла.   Например:

<a href=”www.mathematica6.org/rss/rss.xml”>

< img src=”www.mathematica6.org/images/rss.gif” width=”36″ height=”14″>

</a>

 

  1. В <head> на нашия документ добавяме линк :

<link rel=”alternate” type=”application/rss+xml” title=”YOUR SITE TITLE RSS Feed” href=”URL TO RSS FILE” />

 

  1.  Трябва да се потърси  RSS Feed Directories, където да се добави връзка към .rss файла. Например в този сайт:

http://www.masternewmedia.org/rss/top55/

  1. Накрая трябва да се добави в най-големите търсачки.            Например: Google – http://www.google.co…rs/addfeed.html

 

Свободни инструменти за създаване на RSS feed  към всеки сайт.

Тъй като не всеки ще се заеме с писане на код на XML, а също и когато се поддържа голям сайт с много трафик , това ще отнеме много време и усилия. Затова в интернет пространството съществуват готови инструменти за създаване на RSS feed. Някои са свободни и при тях обновяването на информацията става за часове. При платените – информацията може да се обновява за секунди.

Free Tools to Create RSS

  1. Feedity (http://feedity.com/);
  2. Feed43 (http://feed43.com/);
  3. Feedmarklet (http://www.feedmarklet.com/);
  4. Feedfire  (http://www.feedfire.com/).

 

Добър сайт , който обяснява всичко за RSS е този: http://www.rsscreation.com/

Готово!  Остава да обновявате редовно съдържанието на сайта си и да привличате вниманието на потребителите.Image

Aside | Posted on by | Leave a comment

HTML5 Семантични елементи

Семантичните елементи ясно описват своето съдържание за разработчика и за браузера.
Например елементът <table> означава ,че на страницата ще се изобрази таблица. Това е семантичен елемент.
Пример за несемантичен елемент е елемента <div>, който не дава никаква представа за това ,което съдържа.

Нови семантични елементи в HTML5.

new_elements
и още:
<figure> , <figcaption> , <mark> , <time>.

Таг Описание
<section > Тематично групирано съдържание с заглавие.
<article > Има независимо, автономно съдържание. Може да се използва за нов блог пост, форум пост, коментар,когато се разказва нова история.
<nav > Съдържа навигационни линкове. Този таг е предназначен за големи блокове от навигационни връзки.
<aside > Определя част от съдържанието да бъде настрана в място подобно на лента. Трябва да има връзка с околното съдържание.
<header > Заглавна част на документ или секция. Съдържа уводна информация. В един документ може да има няколко елемента <header>
<footer > Оформя край на документ или раздел. В един документ може да има няколко елемента <footer>
<figure > Този таг е предназначен за илюстрации, схеми, снимки и други подобни. Позицията на елемента е независима от основния поток и ако елементът се премести, това няма да окаже влияние на останалата част на документа.
<figcaption > Заглавие на картинката. Може да се намира над нея или под нея. Не е блоков елемент.
<mark > Оцветява текст различно , с цел да наблегне върху съдържанието му..
<time > Определя време и ден по грегорианския календар.

Поддръжка от браузърите

Internet ExplorerFirefoxChromeOperaSafari

Internet Explorer 9+, Firefox, Chrome, Safari и Opera поддържат новите семантични елементи. За по-старите браузъри има решение, което е описано по-долу на страницата.

Новите елементи са блок-елементи (изключваме само figcaption). За да се показват правилно във всички браузъри (и по-старите) трябва да се добави към style:

header, section, footer, aside, nav, article, figure {
display:block;
}

Проблем при по-старите версии на IE

IE8 и по-старите версии не могат да стилизират непознати елементи т.е. нови HTML елементи. За да се избегне това трябва да се свали и постави в директорията на сайта HTML5 Shiv файл, с помощта на който елементите се стилизират.
Може да се изтегли от този адрес:


http://code.google.com/p/html5shiv/

В <head> на документа, който използва новите елементи трябва да добавим:

< ! – – [if lt IE9] >
< script src=”html5shiv.js” >< /script >
< ! [endif]  – – >

Добре е да започнете да използвате новите семантични елементи на HTML5, защото те се налагат като стандарт в Интернет пространството.

Posted in HTML5 | Leave a comment

Области на видимост в JavaScript

Фразата „обектно-ориентиран скрипт“ страда от явна неточност, защото JavaScript е изцяло обектно-ориентиран език и да се използва по друг начин е просто невъзможно. За да пишем оптимален код на JavaScript, трябва да разберем как работят обектите в този скриптов език, с какво тези обекти се отличават от обектите в другите езици за програмиране, и как да се възползваме от тези различия.

Обектите се явяват основни елементи в JavaScript. Всичко в JavaScript е обект. Но за да има репутация на надежден обектно-ориентиран език, той включва широк арсенал от свойства, които го правят оригинален, както по възможности, така и по стил.

Някои от най-важните аспекти на езика са препратки, области на видимост, контекст, поведения на обекти, способи за създаване на нови обекти и методи със специални пълномощни.

В самата си основа обектите съществуват като семейства от свойства и напомнят хеш-таблиците в другите езици.

Области на видимост

В JavaScript областите на видимост имат особеност. Областта на видимост се съхранява вътре във функцията, а не във блокове (създадени с операторите while, for или if).

Променливи с глобална област на видимост се проявяват като свойства на обекта window.

Интересен е случаят когато имаме променлива, която не е дефинирана т.е. не е използвана декларация var и фактически никъде не е обявена областта на видимост. Когато една променлива не е обявена , но се използва, тя се приема като глобална променлива дори ако се използва само в областта на видимост на дадена функция.

Например:

function addsum() {
sum=100;

}
addsum();
alert (window.sum==100); //sum има глобална област на видимост;

Въпреки че, областите на видимост в javascript не са толкова строги както в обектно – ориентираните езици с блокова структура, това е достатъчно мощен език за интерпретиране.

Posted in JavaScript | Leave a comment

Таймери на JavaScript

clock Една много силна страна на javascript е способността за задаване на интервал от време за извършване на необходимо действие или т.н. таймер. В езика са определени две функции за създаване на таймери:

  • setInterval() – изпълнява функция, отново и отново, през определен интервал;
  • setTimeOut() – изпълнява функция веднъж след като изчака определени милисекунди.

За създаването на намаляващ таймер на javascript са необходими няколко стъпки:

  1. Използваме функцията setTimeOut() и правиме часовник с интервал от 1000 милисекунди (1сек.).
    window.setTimeOut(“Tick()” , 1000);
    function Tick() {

    }
  2. Но след като Tick() е извикана, е необходимо таймерът да продължи. Затова отново викаме функцията в нейното тяло (callback) , като допълваме израза:window.setTimeOut(“Tick()” , 1000);
    function Tick() {
    window.setTimeOut(“Tick()” , 1000);
    }// това е основата на таймера
  3. Сега можеме да използваме таймера за каквото е необходимо.
  4. Нашият таймер трябва да спре на нула секунди, затова трябва да се добави оператор if за проверка на условие :if (TotalSeconds<=0) {
    alert(“Time’s up!”);
    return;
    }
  5. Следващата стъпка е да се конвертират секундите до секунди, минути, часове и може би дни. Използваме метод на обекта Math.
    Например минути:
    var minutes = Math.floor(seconds/60);
    seconds – = minutes*(60);
  6. Добавяме последно функция за по-добър изглед.function LeadingZero (Time) {
    return (Time<10)? “0” + Time : + Time;
    }

Часовникът вече изглежда така – 00:02:26 , вместо така – 0:2:26 .

Posted in JavaScript | Leave a comment