标签: tokenize

如何从Lucene TokenStream获取令牌?

我正在尝试使用Apache Lucene进行标记,我对从一个获取令牌的过程感到困惑TokenStream.

最糟糕的是,我正在查看解决我的问题的JavaDocs中的注释.

http://lucene.apache.org/java/3_0_1/api/core/org/apache/lucene/analysis/TokenStream.html#incrementToken%28%29

不知何故,AttributeSource应该使用an 而不是Tokens.我完全不知所措.

任何人都可以解释如何从TokenStream获取类似令牌的信息吗?

java lucene attributes token tokenize

72
推荐指数
2
解决办法
4万
查看次数

Google协作平台API全文搜索不适用于非西方语言

在我的JavaEE应用程序中,我使用基于Atom的Google Sites API从非公开的Google站点检索内容.从本质上讲,我们将Google网站用作轻量级CMS,并且在应用程序中我使用API​​检索网站内容以提供我的在线帮助系统.我有一段时间没有这个设置,它的工作没有任何障碍.

问题

在我的应用程序中,我需要为在线帮助系统添加全文搜索功能.我知道此功能请求会在某个时刻出现,因此在决定使用Google协作平台托管我的内容时,我检查了Sites API是否支持全文搜索.确实如此.例如,以下URL将在整个站点中搜索my-site包含该关键字的页面user.

https://sites.google.com/feeds/content/my.doma.in/my-site?q=user
Run Code Online (Sandbox Code Playgroud)

这有效,并给我预期的结果页面.但它只针对用西方语言编写的内容,或者更具体地说,用空格和标点符号分隔标记/单词的语言.当我在日语内容上运行类似的搜索时,搜索关键字????:

https://sites.google.com/feeds/content/my.doma.in/my-site?q=%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC
Run Code Online (Sandbox Code Playgroud)

我将只获得结果页面,其中搜索词显示为裸字符串,即由空格或标点符号分隔.由于日语是一种用脚本连续编写的语言,这还不够.包含的页面,例如:

自身ごのユーザー基本情报の确认

不会出现在结果中.因此,似乎在幕后使用的搜索索引是基于"西方"词汇规则创建的,并且日语内容未正确标记化.但是,当我从Google网站的" 搜索此网站"字段中搜索相同的关键字时,我确实得到了正确的结果.我得出结论,存在一个正确的标记化索引,但似乎不可能将它用于基于API的搜索.

到目前为止我尝试过的

为了解决这种情况,这些是我迄今为止探索过的途径:

  • 我试过在Google协作平台中寻找语言设置.有一个通用的UI语言设置已经设置为日语,并且对API查询结果没有影响.没有每页或每模板语言设置来强制索引器/标记器的手.
  • 我试过用双引号引用搜索字符串("????").
  • 我试过包含通配符(*????*).
  • 我已经使用其他语言的参数,在其他谷歌API是常见的URL尝试:lang,hl(界面语言), rl(结果语言)..
  • 我尝试过创建一个Google 自定义搜索引擎,但似乎无法让它在非公开的Google网站上运行.

所以...

我在这里很快就没有想法了.在最糟糕的情况下,我最终将不得不自己检索,标记和索引所有内容,并使其可以通过这种方式进行搜索.由于这需要大量工作,我想知道是否有人遇到过同样的问题,并找到了可接受的解决方法或解决方案.


更新1

我还没有找到针对此问题的优雅解决方案,因此我在Google Apps API问题跟踪器上提出了一个缺陷:https://code.google.com/a/google.com/p/apps-api-issues/issues /细节?ID = 3780

更新2

在经过一些反复来回之后,谷歌的工程师们已经承认问题确实存在于所描述的范围内,并且已经"在内部提交了问题".缺陷票一直停留在被分流状态至今.如果您和我一样有兴趣看到此问题已解决,请花点时间在Google的问题跟踪器上加注星标/投票.

full-text-search google-sites tokenize google-data-api

67
推荐指数
1
解决办法
907
查看次数

使用PowerShell拆分字符串并对每个标记执行某些操作

我想在空格上拆分管道的每一行,然后在自己的行上打印每个令牌.

我意识到我可以使用以下方法获得此结果:

(cat someFileInsteadOfAPipe).split(" ")
Run Code Online (Sandbox Code Playgroud)

但我想要更多的灵活性.我希望能够对每个令牌做任何事情.(我曾经在Unix 上使用AWK,而我正试图获得相同的功能.)

我目前有:

echo "Once upon a time there were three little pigs" | %{$data = $_.split(" "); Write-Output "$($data[0]) and whatever I want to output with it"}
Run Code Online (Sandbox Code Playgroud)

显然,它只打印第一个令牌.有没有办法让我在每个令牌上依次打印?

此外,%{$data = $_.split(" "); Write-Output "$($data[0])"}我从博客获得的部分,我真的不明白我在做什么或语法是如何工作的.

我想谷歌,但我不知道该怎么称呼它.请帮我一两句话给谷歌,或者链接向我解释这些%和所有$符号的作用,以及开始和结束括号的重要性.

我意识到我实际上无法使用(cat someFileInsteadOfAPipe).split(" "),因为文件(或更好的传入管道)包含多行.

关于一些答案:

如果Select-String在令牌化之前用于过滤输出,则需要记住Select-String命令的输出不是字符串的集合,而是MatchInfo对象的集合.要获取要拆分的字符串,需要访问对象的Line属性MatchInfo,如下所示:

cat someFile | Select-String "keywordFoo" | %{$_.Line.Split(" ")}
Run Code Online (Sandbox Code Playgroud)

string powershell tokenize

54
推荐指数
1
解决办法
25万
查看次数

标记错误:java.util.regex.PatternSyntaxException,悬空元字符'*'

我正在使用以下格式split()标记分隔的字符串*:

name*lastName*ID*school*age
%
name*lastName*ID*school*age
%
name*lastName*ID*school*age
Run Code Online (Sandbox Code Playgroud)

我正在使用以下代码从名为"entrada.al"的文件中读取此内容:

static void leer() {

    try {
        String ruta="entrada.al";
        File myFile = new File (ruta);
        FileReader fileReader = new FileReader(myFile);

        BufferedReader reader = new BufferedReader(fileReader);

        String line = null;

        while ((line=reader.readLine())!=null){
            if (!(line.equals("%"))){
                String [] separado = line.split("*"); //SPLIT CALL
                names.add(separado[0]);
                lastNames.add(separado[1]);
                ids.add(separado[2]);
                ages.add(separado[3]);
            }
        }

        reader.close();
    }
Run Code Online (Sandbox Code Playgroud)

我得到了这个例外:

线程"main"中的异常java.util.regex.PatternSyntaxException:在索引0*附近悬挂元字符'*'

我的猜测是*原始文本文件中缺少一个年龄后导致了这种情况.我该如何解决这个问题?

java regex split tokenize

53
推荐指数
2
解决办法
14万
查看次数

是否有在PL/SQL中拆分字符串的功能?

我需要编写一个过程来规范化一个记录,该记录具有由一个char连接的多个标记.我需要获取这些标记分割字符串并将每个标记作为新记录插入表中.Oracle是否有类似"拆分"功能的东西?

string oracle plsql split tokenize

48
推荐指数
7
解决办法
19万
查看次数

如何在NLTK中对字符串句子进行标记?

我正在使用nltk,所以我想创建自己的自定义文本,就像nltk.books上的默认文本一样.但是,我刚刚接受了这样的方法

my_text = ['This', 'is', 'my', 'text']
Run Code Online (Sandbox Code Playgroud)

我想发现任何方式输入我的"文本":

my_text = "This is my text, this is a nice way to input text."
Run Code Online (Sandbox Code Playgroud)

哪种方法,python或者nltk允许我这样做.更重要的是,我怎么能低估标点符号呢?

python nlp tokenize nltk

48
推荐指数
1
解决办法
12万
查看次数

如何在Java中逐个字符地读取输入?

我习惯了c风格getchar(),但似乎没有什么比得上java了.我正在构建一个词法分析器,我需要逐个读入输入字符.

我知道我可以使用扫描程序扫描令牌或行,并通过char-by-char解析令牌,但对于跨越多行的字符串来说,这似乎很笨重.有没有办法在Java中从输入缓冲区获取下一个字符,或者我应该只使用Scanner类插件?

输入是文件,而不是键盘.

java character tokenize

46
推荐指数
4
解决办法
23万
查看次数

如何使用Lucene Analyzer来标记字符串?

有没有一种简单的方法可以使用Lucene的任何子类Analyzer来解析/标记化String

就像是:

String to_be_parsed = "car window seven";
Analyzer analyzer = new StandardAnalyzer(...);
List<String> tokenized_string = analyzer.analyze(to_be_parsed);
Run Code Online (Sandbox Code Playgroud)

java lucene tokenize analyzer

38
推荐指数
2
解决办法
4万
查看次数

解析器(例如,HTML)如何工作?

为了论证,我们假设一个HTML解析器.

我已经读过它首先将所有内容标记化,然后解析它.

tokenize意味着什么?

解析器是否每个都读取每个字符,构建一个多维数组来存储结构?

例如,它是读取a <然后开始捕获元素,然后一旦它遇到关闭>(在属性之外)它被推送到某个地方的数组堆栈?

我为了知道而感兴趣(我很好奇).

如果我要阅读像HTML Purifier这样的内容,那么这会让我对HTML的解析方式有所了解吗?

html browser parsing tokenize html-parsing

37
推荐指数
4
解决办法
1万
查看次数

在PL/SQL中将逗号分隔的字符串转换为数组

如何将逗号分隔的字符串转换为数组?

我有输入' 1,2,3',我需要将其转换为数组.

oracle plsql tokenize

37
推荐指数
4
解决办法
17万
查看次数