AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Google Meinten Sie

Ein Thema von API · begonnen am 6. Aug 2006 · letzter Beitrag vom 12. Sep 2006
Antwort Antwort
Seite 1 von 3  1 23      
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#1

Google Meinten Sie

  Alt 6. Aug 2006, 12:35
Hat jemand von euch schon mal eine Funktion gecoded welche
von einem bestimmten Wort ähnliche Wörter aus Google ausliest.

Man gibt z.B Deutch ein und Google sagt "Meinten Sie: Deutsch"

Delphi-Quellcode:
function GetSimilarWord(meinwort: string): string;
begin
end;
Habe einen Code gefunden aber nicht in Delphi.
Wie kann ich das übersetzen?

Code:
=begin
Raimbo, the Ruby AIM Bot Object.
Copyright (C) 2003 Kurt M. Dresner (kdresner@rubyforge.org)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
=end

require 'net/http'
require 'uri/common'
require 'cgi'
Net::HTTP.version_1_2
module Google
  def Google.search(inputterms, numresults=1)
    unless inputterms.length > 0
      return "What should I search for?"
    end
    searchterms = URI.escape inputterms
   
    query = "/search?q=#{searchterms}&btnG=Google+Search"
    result = "no results found."
   
    proxy_host = nil
    proxy_port = nil
   
    if(ENV['http_proxy'])
      if(ENV['http_proxy'] =~ /^http:\/\/(.+):(\d+)$/)
        proxy_host = $1
        proxy_port = $2
      end
    end
    http = Net::HTTP.new("www.google.com", 80, proxy_host, proxy_port)
   
    http.start do |http|
      begin
        resp , = http.get(query)
        if resp.code.to_i == 200
     didyoumean = nil
     results = []
     resp.body.each("Similar pages</a>") do |l|
       if not didyoumean and l =~ /Did you mean:.*?[i](.*?)<\/i>.*?<\/a>/
         didyoumean = $1
       end
       if (l =~ /(<p class="?g"?>)(<a.*?<\/a>)/) and (results.size < numresults)
         results.push("Hit #{results.size + 1}: #{$2}")
       end
     end
     unless results.empty?
       result = results.join("\n")
       if (results.size < numresults) and didyoumean
         result += " (Did you mean [i]#{didyoumean}[/i]?)."
       else
         result += "."
       end
            # comment out the line below to leave the search terms bolded
            result.gsub!(/[b]|<\/b>/, "")
     else
       if didyoumean
         result += "\n(Did you mean [i]#{didyoumean}[/i]?)."
       end
     end
   end
      rescue => e
   result = "Error encountered while talking to Google."
      end
    end
    CGI.unescapeHTML result
  end
end
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:40
also diese funktion macht nichts anderes als das der Funktion übergebene Wort an Google zu schicken und zu schauen ob Google ein "did you mean..." vorschlägt und das zurückzugeben - das ist ja nicht wirklich eine glanzleistung

Ich weis nicht ob dir das bewusst ist - wenn ja: IdHTTP, und dann einfach was du zurückbekommst auswerten, dürfte nicht sooo schwer sein.

Wenn nein - und das hoffe ich - kann ich dir aber da jetzt leider auch keinen Algo anbieten

  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:41
Tja, lies dir ein C++ Tutorial durch.

Oder, noch ne Idee, du überprüfst SoundEx Werte, und zwar die vom eingegebenen Wort mit Wörtern in einer Datenbank, wobei die Wörter in der Datenbank, die öfter eingegeben werden, Vorrang haben.

Delphi-Quellcode:
type
  TWord = record
    text: String;
    count: Integer;
  end;

var Words: array of TWord;

//...

function GetSimilar(str: String): String;
var I: Integer;
    bestindex, bestcount: Integer;
begin
  bestcount:=0;
  bestindex:=-1;
  for I:=0 to high(Words) do
    if (soundexsimilar(str, words[I].text)) and (words[I].count>bestcount) then
    begin
      bestcount:=words[I].count;
      bestindex:=I;
    end;
  if bestindex=-1 then result:='else result:=words[bestindex].text;
end;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:41
Zitat von Meflin:
IdHTTP, und dann einfach was du zurückbekommst auswerten, dürfte nicht sooo schwer sein.
Achtung, unbedingt den User-Agent ändern. Google reagiert allergisch auf den originalen IdHttp-UserAgent

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:42
Du brauchst einen Algorithmus der die die Ähnlichkeit von 2 Wörtern berechnet. Wie z.B. Levenshtein.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#6

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:43
Zitat von mkinzler:
Du brauchst einen Algorithmus der die die Ähnlichkeit von 2 Wörtern berechnet. Wie z.B. Levenshtein.
Will er doch gar nicht, er will einfach Googles Antwort nutzen

......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#7

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:54
Zitat von sakura:
Zitat von mkinzler:
Du brauchst einen Algorithmus der die die Ähnlichkeit von 2 Wörtern berechnet. Wie z.B. Levenshtein.
Will er doch gar nicht, er will einfach Googles Antwort nutzen

......
Danke für die Antworten. sakura hat recht, bitte immer schön die Fragestellung durchlesen, so wie in der Schule

Wie kann man den User-Agent ändern? Braucht es da einen Registry Eingriff?
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#8

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:56
Hi!

Nein, dazu gibt es im OI (bei ausgewählter IdHttp-Komponente) die Eigenschaft Request und dort drunter User-Agent!


Ciao, Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#9

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:57
ok, schon gefunden TIdHttp.Request.UserAgent
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Google Meinten Sie

  Alt 6. Aug 2006, 12:57
Zitat:
sakura hat recht, bitte immer schön die Fragestellung durchlesen, so wie in der Schule Wink
Thema verfehlt! 6! Setzen!
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz