Nano Hash - криптовалюты, майнинг, программирование

Пунктуация и ближний запрос

Когда я включил punctuation-insensitive в своем cts:word-query, даже тогда запрос NEAR разбивает слово - на два слова

let $xml :=

  <abstracts count="1">
            <abstract>
              <abstract_text count="1">
                <p>We assessed the impact of a pharmacotherapy follow-up programme on key safety points [adverse events (AE) 
                and drug administration] in outpatients treated with oral antineoplastic agents (OAA). We performed a comparative, 
                interventional, quasi-experimental study of outpatients treated with OAA in a Spanish hospital to compare pre-intervention 
                group patients (not monitored by pharmacists during 2011) with intervention group patients (prospectively monitored by 
                pharmacists during 2013). AE data were collected from medical records. Follow-up was 6 months, and 249 patients were 
                included (pre-intervention, 115; intervention, 134). After the first month, AE were detected in 86.5% of patients 
                in the pre-intervention group and 80.6% of patients in the intervention group, P = 0.096. During the remaining months, 
                79.0% patients had at least one AE in the pre-intervention group compared with 78.0% in the intervention group, P = 0.431. 
                AE were more prevalent with sorafenib and sunitinib. In total, 173 drug interactions were recorded (pre-intervention, 80; 
                intervention, 93; P = 0.045). Drug interactions were more frequent with erlotinib and gefitinib; food interactions were 
                more common with sorafenib and pazopanib. Our follow-up of cancer outpatients revealed a reduction in severe AE and major 
                drug interactions, thus helping health professionals to monitor the safety of OAA.</p>
              </abstract_text>
            </abstract>
          </abstracts>

let $q3 :=
    cts:near-query(
      (
       cts:element-query((xs:QName("abstract_text")),
          cts:word-query( ("Controlled", "randomized", "randomised", "clinical", "masked","blind*","multi center", "open label*","compar*", "cross over", "placebo",
                "post market","meta analysis","volunteer*", "prospective"
                ),
          ("case-insensitive", "punctuation-insensitive", "wildcarded"))
        )
        ,
        cts:element-query((xs:QName("abstract_text")),
          cts:word-query(("stud*", "trial*" ),
          ("case-insensitive", "punctuation-insensitive", "wildcarded"))
        )
      ),   
       3
    )

return 
  cts:highlight($xml,$q3, <b>{$cts:text}</b>)

Когда я помещаю NEAR в 3, он не совпадает с comparative и study, хотя расстояние равно 3, а оно у меня punctuation-insensitive. Но когда меняю на 4, работает ..

Но когда я также меняю на punctuation-sensitive, даже тогда с NEAR расстоянием до 3 все равно не совпадает. Это почему ?

А также я хочу добиться в word-query совпадения, скажем, placebo-controlled и placebo controlled. что, как мне кажется, когда я включаю punctuation-insensitive и ищу placebo controlled в моем запросе слов, я найду все комбинации слов .. Но как это повлияет на расстояние NEAR, если то же самое используется в запросе NEAR?

26.07.2018

Ответы:


1

На самом деле это не имеет ничего общего с пунктуацией при поиске, а скорее с тем, как MarkLogic токенизирует и индексирует позицию отдельных слов. По умолчанию токенизация MarkLogic разбивает фразы с переносом на отдельные слова. Вы можете использовать собственный токенизатор, чтобы указать, как MarkLogic должен индексировать слова, если вам не нравится поведение по умолчанию. Существует довольно подробное руководство по использованию настраиваемого токенизатора для игнорирования дефисов при токенизации слов. доступно здесь.

В вашем случае я не уверен, что рекомендовал бы вам изучить использование специального токенизатора. Возможны непредвиденные последствия, и это не так эффективно, как использование токенизации по умолчанию. Вместо этого, вероятно, было бы разумнее адаптировать ваш код к тому, как работает токенизация по умолчанию.

Посмотрим на: comparative, interventional, quasi-experimental study

Это будет токенизироваться как:

Word            | Position
comparative     | 0
interventional  | 1
quasi           | 2
experimental    | 3
study           | 4

Таким образом, расстояние между comparative и study равно 4. Обратите внимание, что quasi-experimental состоит из двух слов.

Я не уверен, что понял вопрос, который вы задаете в последнем абзаце. Но я надеюсь, что это дает вам достаточно информации, чтобы лучше понять, как ведет себя токенизация по умолчанию.

27.07.2018
  • Вы можете запустить что-то вроде этого, чтобы увидеть токенизацию в действии: cts: tokenize («сравнительное, интервенционное, квазиэкспериментальное исследование»)! xdmp: описать (.) 30.07.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..