diff --git a/AGENTS.md b/AGENTS.md index 023f30da5..55581b934 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -30,7 +30,7 @@ Three committed contributor docs carry the parser's normative rules and their re **Counting claims.** A bare count in prose is either an assertion or a liability, keyed by who observes its staleness: asserted counts (a test holds the number) fail CI at change time — the useful kind; dated snapshots ("51 sites at spec time") cannot go stale; standing present-tense prose counts are the forbidden class — promote to an assertion, add a date, or state the invariant and let a test count. After changing how many times something runs, sweep for counts, not for the thing's name. -**Release-log claims.** Quantified or universal behavior claims in release bullets must come from the snapshot's diff since the last release, be verified against rules examples, or -- for a view the snapshot cannot see -- carry a recompute recipe stored with the design entry the bullet cites; never write one from memory. `uv run python tools/differential/snapshot.py --since v` prints every corpus name the release moved, grouped by changed field; v2.4.1 is the first tag carrying a snapshot, and for an older release `compare.py --baseline ` prints the same report against the PyPI wheel, closing with the entries compared and how many moved names are Latin-only. Both say how many moved names only `corpus_cldr.jsonl` holds. The snapshot records the seven role fields, ambiguity kinds, `initials()` and the two case-repair views (`capitalized()` and `capitalized(force=True)`, each only where it changes the text, #826) for every name, so an initials or case count is read off it directly -- with two limits. A case view holds the whole repaired name, so in a name repair changes, a role move that changes the rendering moves the view too, with or without a word recased: read a view move that comes with a role move by its words' case, not by whether it moved (#808's `John Smith, otr/l` moved both, `'John Smith OTR/L'` -> `'Otr/L John Smith'`). And `--since` a tag whose snapshot predates #826 (v2.5.0 and earlier) does not compare the views at all, so 2.6.0's case claims come from `compare.py --baseline 2.5.0`. `corpus_cldr.jsonl`'s fictional renderings are in it: count them out of a release figure (both tools print how many moved names only that file holds), or say the figure includes them. A render view the snapshot does not record -- `str()` under a custom format, `initials()` under a custom spec -- stays invisible to it, and for those the first two sources cannot reach a claim: the snapshot is byte-identical across the change, and an example line witnesses an output without counting anything. A recipe names the corpus files, the policy sweep, and -- the part that is easy to omit and fatal -- THE COMPARATOR, which must be something the shipped tree is not: #408's first recipe said to compare `initials()` against a folded-first partition, which is what `initials()` now IS, so it reproduced 0 where the bullet claimed 660 and was the only stated provenance for the number. Run the recipe as written before shipping the bullet. Cross-version numbers (a released wheel, the pre-change tree) are dated snapshots under Counting claims, since nothing in the repository re-runs them. The same standard binds decisions entries and PR bodies: a claim that a change restores the released reading is measured over the whole moved population against the wheel, never spot-checked (#625 claimed its 774 moves landed on the 1.4.0 and 2.3.0 readings from three names; measured, the tree matched 2.3.0 on 0 of 258 moved texts, master on 152), and a population size is re-counted from its recipe, never copied from another entry (the same entry carried #624's 137,810 for a grid of 395,148). Code comments citing rule IDs follow the excerpt discipline, checked by tests/v2/test_doc_citations.py: a rule's quotable text is its fields' prose (When, Tolerated, Then and its bullets, Because, and the Except, Precedence and Accepted bullets), and its fences and the footer below `---`, where the `Signal:` line stands, are not; `rules/H` names the H section, whose Background is quotable; a decisions citation may paraphrase, but what it quotes must be verbatim; and a reference with no quote must still name something that exists. The check's reach is a quote within four words of the ID or chained to one that is: a quote further off reads exactly like a name written in double quotes, so it is NOT checked, and the second review of #632 found 14 such quotes stale by hand. Keep a quote beside its ID. Quotes of AGENTS.md itself are not checked at all. **A citation comment holds three things: the quote, a line saying which clause this code implements, and `decisions/X (#N)` pointers to the entries that hold the history.** A code-local reason a reader of that line needs may stay beside them (why an index is safe to keep, why a test runs last), but issue history, measurements and restated examples belong in decisions/, where they are dated and kept current; in a comment they are a second copy that goes stale where nobody looks. #760 trimmed five blocks of 59 to 100 lines that had grown that way (`_post_rules._mark_suffix_entries`, group's P3 both-sides test, its S2/P2/P4 chain head and S4 chain emitter, and the honorific peel's scope in `_script_segment`), moving into dated decisions bullets what those entries lacked. Two of the moved claims no longer held: a policy example that had stopped reaching its case, and a credential said to land as a title that lands as a suffix. +**Release-log claims.** Quantified or universal behavior claims in release bullets must come from the snapshot's diff since the last release, be verified against rules examples, or -- for a view the snapshot cannot see -- carry a recompute recipe stored with the design entry the bullet cites; never write one from memory. `uv run python tools/differential/snapshot.py --since v` prints every corpus name the release moved, grouped by changed field; v2.4.1 is the first tag carrying a snapshot, and for an older release `compare.py --baseline ` prints the same report against the PyPI wheel, closing with the entries compared and how many moved names are Latin-only. Both say how many moved names only `corpus_cldr.jsonl` holds. The snapshot records the seven role fields, ambiguity kinds, `initials()` and the two case-repair views (`capitalized()` and `capitalized(force=True)`, each only where it changes the text, #826) for every name, so an initials or case count is read off it directly -- with two limits. A case view holds the whole repaired name, so in a name repair changes, a role move that changes the rendering moves the view too, with or without a word recased: read a view move that comes with a role move by its words' case, not by whether it moved (#808's `John Smith, otr/l` moved both, `'John Smith OTR/L'` -> `'Otr/L John Smith'`). And `--since` a tag whose snapshot predates #826 (v2.5.0 and earlier) does not compare the views at all, so 2.6.0's case claims come from `compare.py --baseline 2.5.0`. `corpus_cldr.jsonl`'s fictional renderings are in it: count them out of a release figure (both tools print how many moved names only that file holds), or say the figure includes them. A render view the snapshot does not record -- `str()` under a custom format, `initials()` under a custom spec -- stays invisible to it, and for those the first two sources cannot reach a claim: the snapshot is byte-identical across the change, and an example line witnesses an output without counting anything. The DEFAULT `str()` is mostly invisible too, the snapshot seeing it only through a case view where repair changes the text: #754's render defaults moved `str()` for 1,034 corpus entries and the case views for 159, so a change to the default rendering is measured by rendering every entry in both trees (decisions/R6's 2026-10-29 entry holds the recipe). A recipe names the corpus files, the policy sweep, and -- the part that is easy to omit and fatal -- THE COMPARATOR, which must be something the shipped tree is not: #408's first recipe said to compare `initials()` against a folded-first partition, which is what `initials()` now IS, so it reproduced 0 where the bullet claimed 660 and was the only stated provenance for the number. Run the recipe as written before shipping the bullet. Cross-version numbers (a released wheel, the pre-change tree) are dated snapshots under Counting claims, since nothing in the repository re-runs them. The same standard binds decisions entries and PR bodies: a claim that a change restores the released reading is measured over the whole moved population against the wheel, never spot-checked (#625 claimed its 774 moves landed on the 1.4.0 and 2.3.0 readings from three names; measured, the tree matched 2.3.0 on 0 of 258 moved texts, master on 152), and a population size is re-counted from its recipe, never copied from another entry (the same entry carried #624's 137,810 for a grid of 395,148). Code comments citing rule IDs follow the excerpt discipline, checked by tests/v2/test_doc_citations.py: a rule's quotable text is its fields' prose (When, Tolerated, Then and its bullets, Because, and the Except, Precedence and Accepted bullets), and its fences and the footer below `---`, where the `Signal:` line stands, are not; `rules/H` names the H section, whose Background is quotable; a decisions citation may paraphrase, but what it quotes must be verbatim; and a reference with no quote must still name something that exists. The check's reach is a quote within four words of the ID or chained to one that is: a quote further off reads exactly like a name written in double quotes, so it is NOT checked, and the second review of #632 found 14 such quotes stale by hand. Keep a quote beside its ID. Quotes of AGENTS.md itself are not checked at all. **A citation comment holds three things: the quote, a line saying which clause this code implements, and `decisions/X (#N)` pointers to the entries that hold the history.** A code-local reason a reader of that line needs may stay beside them (why an index is safe to keep, why a test runs last), but issue history, measurements and restated examples belong in decisions/, where they are dated and kept current; in a comment they are a second copy that goes stale where nobody looks. #760 trimmed five blocks of 59 to 100 lines that had grown that way (`_post_rules._mark_suffix_entries`, group's P3 both-sides test, its S2/P2/P4 chain head and S4 chain emitter, and the honorific peel's scope in `_script_segment`), moving into dated decisions bullets what those entries lacked. Two of the moved claims no longer held: a policy example that had stopped reaching its case, and a credential said to land as a title that lands as a suffix. **Writing the user docs (docs/*.rst) has its own AGENTS.md too.** `docs/AGENTS.md` carries the style the docs are written in — tables as indexes, subheadings per task, measured claims, recipe doctests — distilled from PR #588. It loads the same way as the docs/design/ one below; if your tool does not do nested discovery, read it before editing a `.rst` file under docs/. @@ -227,7 +227,7 @@ The `config/` SETS are frozen since 2.2 (#293): there is no `.add()`/`.remove()` The 2.0 rewrite landed as underscore-private modules beside the v1 code, which 2.0 and then 3.0 deleted. These conventions apply to all of it. The full design record (rationale, settled-decision logs, dated amendments) lives in untracked `docs/superpowers/specs/`; this section is the enforceable subset. **A commit that establishes or amends one of these conventions must update this section in the same commit** — grep-driven staleness sweeps miss paraphrased prose (see Workflow above), so write-time maintenance is the mechanism, audits are the backstop. - **Module layout**: every module is underscore-private (`_types.py`, `_lexicon.py`, `_policy.py`, `_locale.py`, `_render.py`, `_reading_index.py`, `_pipeline/`, `_parser.py`). The public import surface is exactly `nameparser`, `nameparser.locales` and the vocabulary data modules under `nameparser.config`; `nameparser/__init__.py` holds re-exports and `__all__` only — no logic. -- **Layering is enforced by `tests/v2/test_layering.py`** (exact-module matching; `if TYPE_CHECKING:` imports don't count): `_types` imports nothing internal at module level — its rendering delegates import `_render` at call time; `_lexicon` and `_policy` sit above `_types` independently (`_lexicon` may import `nameparser.config.*` DATA modules only, e.g. `config/maiden_markers.py`); `_reading_index` imports nothing internal at module level and the index, `config/_index.py`, at call time, since `tools/vocab/build.py` loads it by path; `_locale` sits on `_lexicon`+`_policy` (plus `_types` for the shared pickle mixin); `_render` imports `_types` and `_lexicon` (for `Lexicon.default()` and `_normalize`); `_pipeline/*` imports `_types`+`_lexicon`+`_policy` plus in-package `_pipeline` helpers; `_parser` sits on everything except `_render`; `__main__` imports only the public package; locale pack modules (`locales/*.py`) import `_locale`/`_lexicon`/`_policy`/`_types` only (`_types` joined the list in #272 — `locales/ja.py`'s segmenter factory constructs a `Segmentation`), and the `locales/__init__` additionally lazy-imports its packs (PEP 562). Extend the test's `ALLOWED` table when adding a module. +- **Layering is enforced by `tests/v2/test_layering.py`** (exact-module matching; `if TYPE_CHECKING:` imports don't count): `_types` imports nothing internal at module level — its rendering delegates import `_render` at call time; `_lexicon` and `_policy` sit above `_types` independently (`_lexicon` may import `nameparser.config.*` DATA modules only, e.g. `config/maiden_markers.py`); `_reading_index` imports nothing internal at module level and the index, `config/_index.py`, at call time, since `tools/vocab/build.py` loads it by path; `_locale` sits on `_lexicon`+`_policy` (plus `_types` for the shared pickle mixin); `_render` imports `_types`, `_lexicon` (for `Lexicon.default()` and `_normalize`) and `_policy` (for the scripts that write no initials); `_pipeline/*` imports `_types`+`_lexicon`+`_policy` plus in-package `_pipeline` helpers; `_parser` sits on everything except `_render`; `__main__` imports only the public package; locale pack modules (`locales/*.py`) import `_locale`/`_lexicon`/`_policy`/`_types` only (`_types` joined the list in #272 — `locales/ja.py`'s segmenter factory constructs a `Segmentation`), and the `locales/__init__` additionally lazy-imports its packs (PEP 562). Extend the test's `ALLOWED` table when adding a module. - **Canonical field order** — the seven roles in `Role` enum declaration order, defined once and derived everywhere (properties, `as_dict`, reprs, `comparison_key`). Never restate the order literally. `Role` is a `StrEnum`: members compare as their field-name strings, and `tokens_for()` coerces strings via `_coerce_enum`. - **Method organization**, fixed section order in every class: fields + `__post_init__` validation → alternative constructors → dunders (construction/equality → protocol → operators) → properties → public methods by concern (access → editing → comparison → rendering delegates) → private helpers last, except a helper serving exactly one section may sit at that section's head. - **Validation is eager and fail-loud**: every `raise` states the offending value, the expected form, and the fix. Exception taxonomy: wrong type — including wrong element type inside a collection, bare `str` where an iterable of strings is expected, or a `Mapping` where a plain iterable is expected — raises `TypeError`; well-typed but unacceptable values raise `ValueError`; failed enum lookups stay `ValueError` for any input (stdlib `EnumType` precedent). **When the message hands the reader code to paste, that code has to survive a type checker, and then RUN** — nameparser ships `py.typed`, and a placeholder can type-check and still raise: the 2.4 release sweep's first fix to the `capitalization_exceptions` hint offered `('key', 'Value')`, which passes mypy and fails #459's mask check, so `test_add_capitalization_exceptions_raises_pointing_at_replace` now executes the offered code. #337's segmenterless warning offered `Policy(segment_scripts=())`, an `arg-type` error, because these fields are annotated with what they STORE rather than everything the constructor accepts. Prefer the `frozenset()` / `()` spellings in messages and docstrings, and pin the offered spelling in a test — the warning tests matched on `ja_segmenter` and never checked the actionable half of the message. **A warning emitted in `Parser.__post_init__` needs `parser_for` to re-emit it from its own frame** (the `catch_warnings(record=True)` block at its return): `__post_init__`'s `stacklevel` is sized for direct `Parser(...)` construction, and through `parser_for`'s extra frame the default one-line rendering attributes the warning to the library's own `return Parser(...)` — the exact call the message tells the user to change becomes invisible. No single stacklevel serves both entry points; a new construction warning gets the re-emission for free, but a new CONSTRUCTION SITE for `Parser` inside this package needs its own re-emission or its callers get library-attributed warnings (#337 review). @@ -243,7 +243,7 @@ The 2.0 rewrite landed as underscore-private modules beside the v1 code, which 2 - **A claim about WHICH STAGE or WHICH LAYER does something is checkable — check it before writing it.** The pipeline is eight stages with a written ownership map (`ParseState`'s docstring, pinned by `tests/v2/pipeline/test_state.py`), and `parse(s).tokens` prints every token's role and tags, so "extract assigns this", "classify never sees that", "group consumes it" each have a one-command answer. #329's prose claimed delimited maiden content is *"claimed whole before classify has tagged anything inside it"*; measured, `classify` tags the marker fine and only the CONSUMING is missing, because `_group`'s rule walks `pieces` and a token that already carries a role is not in `pieces`. Two different mechanisms, one plausible sentence covering both. That single claim then shipped SIX times across three correction rounds, which is the part worth internalizing: **when a mechanism claim turns out wrong, sweep for where else you wrote it, and sweep again at the END of the change over the words the change itself just added.** Prose density here means one idea lives in a docstring, a case note, a release-log entry and this file at once; the implementer working against a wrong mechanism is the person most likely to restate it; and rewriting a mechanism claim is writing one, so the correction earns the same one-command check as the original — two of the six instances were fresh errors introduced by the sentence fixing the previous one. **Adjacency is the trap.** The claim that feels already-known is the one about the neighbouring stage or the neighbouring layer: one comment block in the 2.x `tests/v2/test_facade_cases.py` got the exception type, the raising layer, the skip mechanism, the count of skipped rows, and which row was blocked all wrong at once — every one a claim about `_config_shim` versus real 1.4.0, written from reasoning, in the file whose whole job is translating between them. What finally held was not better prose but moving the claim into a test (`_CORE_ONLY_IDS`, deleted with the facade in 3.0), which cannot be wrong the way a sentence can. - **Typing/docs**: `from __future__ import annotations`; `frozen=True, slots=True` on every public dataclass; strict-profile mypy flags via per-module overrides in pyproject (`strict = true` itself is not valid per-module). Docstrings state contracts in prose with **no doctest blocks** — `--doctest-modules` makes every example a test; behavior examples go to unit tests per the lean-docs rule. **Document the positive direction of a partial property**: "a non-empty `ambiguities` is a signal to act on" is checkable, while "an empty one means no fork occurred" is a universal negative needing exhaustive verification -- that claim was written twice and falsified twice, at sites the author had not audited. - **The segmenter contract**: the optional `Parser(segmenter=...)` hook is parse-totality's ONE exception (locales spec section 4). Everything inside that exception is a bug in USER CODE, never a fact about the name, so it is surfaced rather than absorbed: the segmenter's own exceptions propagate, and the two protocol violations the stage can detect for itself — an answer of the wrong type, and one cutting at or past the end of the token it was handed — raise `TypeError`/`ValueError` from `_script_segment` for the same reason. The line to hold when adding a check there: a protocol violation by the segmenter's AUTHOR raises, while an adapter's defense against its own third-party library (`locales/ja.py`'s repertoire, length, reconstruction and score guards) declines with `None`, because what those catch is a fact about the content. -- **Pickling**: v2 types must round-trip (`Parser` is picklable by construction, and it holds a `Lexicon`; the one qualifier is that a `Parser` pickles iff its segmenter does — see the segmenter bullet above). Every frozen type assigns `_guarded_getstate`/`_guarded_setstate` (`_types.py`) in its class body (`@dataclass(slots=True)` would override inherited pickle methods) — unpickling fails at the LOAD site on field-layout skew, with one widening: a field added after its type shipped carries `metadata={_types.ADDED_IN: ""}` and a default, and an older pickle missing it loads with the default (`Ambiguity.alternative`, 2.7; `Token.reading`, 3.0.0) -- a missing field without the marker, default or not, an unknown field and a renamed one are still refused, each a row in `tests/v2/test_types.py::_REFUSED_SKEWS`, so a new field on a pickled type takes the marker or breaks every older pickle; the shared guard deliberately does NOT re-validate values (pickle is not a security boundary; canonical state comes from a validated instance). `Lexicon` keeps its own copy of the guard (layering) plus the `mappingproxy` slot rebuild; a new unpicklable slot type needs the same treatment plus a round-trip test. `Lexicon`'s copy of the guard refuses a field added later (no `ADDED_IN`), so adding a `Lexicon` field breaks older `Lexicon`, `Parser` and locale-pack pickles. And unlike the shared guard it DOES re-validate: it re-runs `__post_init__` and refuses a state holding an entry that is not already normalized, because `particles_ambiguous` changed meaning between v1 and v2 without changing its name, and an old blob would otherwise load an inverted lexicon in silence. +- **Pickling**: v2 types must round-trip (`Parser` is picklable by construction, and it holds a `Lexicon`; the one qualifier is that a `Parser` pickles iff its segmenter does — see the segmenter bullet above). Every frozen type assigns `_guarded_getstate`/`_guarded_setstate` (`_types.py`) in its class body (`@dataclass(slots=True)` would override inherited pickle methods) — unpickling fails at the LOAD site on field-layout skew, with one widening: a field added after its type shipped carries `metadata={_types.ADDED_IN: ""}` and a default, and an older pickle missing it loads with the default (`Ambiguity.alternative`, 2.7; `Token.reading` and `ParsedName.order`, 3.0.0) -- a missing field without the marker, default or not, an unknown field and a renamed one are still refused, each a row in `tests/v2/test_types.py::_REFUSED_SKEWS`, so a new field on a pickled type takes the marker or breaks every older pickle; the shared guard deliberately does NOT re-validate values (pickle is not a security boundary; canonical state comes from a validated instance). `Lexicon` keeps its own copy of the guard (layering) plus the `mappingproxy` slot rebuild; a new unpicklable slot type needs the same treatment plus a round-trip test. `Lexicon`'s copy of the guard refuses a field added later (no `ADDED_IN`), so adding a `Lexicon` field breaks older `Lexicon`, `Parser` and locale-pack pickles. And unlike the shared guard it DOES re-validate: it re-runs `__post_init__` and refuses a state holding an entry that is not already normalized, because `particles_ambiguous` changed meaning between v1 and v2 without changing its name, and an old blob would otherwise load an inverted lexicon in silence. - **One sanctioned global**: the (future) cached default `Parser`. Lazily cached FROZEN singletons (`Lexicon.default()`'s `functools.cache`, the future default parser) are constants, not state; any second piece of module-level MUTABLE state requires amending the conventions doc, on purpose, in review. - **Tests**: all v2 tests live in the `tests/v2/` package, one test module per source module plus the cross-cutting ones (`test_reprs.py`, `test_layering.py`, `test_contracts.py`, `test_properties.py`, `test_benchmark.py`, the `cases.py`/`test_cases.py` table, `test_regex_sync.py`, which pins the pipeline's hand-copied patterns against their sources, and `test_snapshot.py`, which holds every corpus name's reading to `tools/differential/snapshot.jsonl` — sharing `_differential_fixtures.py` with `test_differential.py` and `test_corpora.py` for the handles on `tools/differential/`), names stating behavior; the 1.x suite's parsing tests stand ported to `parse()` in `tests/*.py`. Never assert `Lexicon.default()` contents; the narrow sourcing spot-checks in `test_default_sources_v1_vocabulary` that pin the v1→v2 migration contract (e.g. the flipped `particles_ambiguous` model) are the sanctioned exception. diff --git a/docs/design/decisions/3-0-reevaluations.md b/docs/design/decisions/3-0-reevaluations.md index 094c5c8a2..da851b7bd 100644 --- a/docs/design/decisions/3-0-reevaluations.md +++ b/docs/design/decisions/3-0-reevaluations.md @@ -5,7 +5,7 @@ Promoted 2026-08-15 from session memory (Derek's 2026-07-30 ask; promotion appro ## Standing - 3.0 carries no v1 compatibility layer: `HumanName`, `nameparser.parser`, `nameparser.util`, `nameparser.config`'s five shim names and the five 1.x word-list names 2.2 retired are gone, so every surface speaks `given` and `family`, a configuration is a `Lexicon` and a `Policy` handed to a `Parser`, and a pickle is a core type's — 2026-10-28 #357, REMOVAL. -- Render's default format space-joins its fields as v1's did, so an interpunct transcription renders space-joined (`str(parse("威廉·莎士比亚"))` is `'威廉 莎士比亚'`) and a caller reinstates the dot with a format of their own; 3.0's default follows the order a name was read in and keeps its written separators, decided in decisions/vocabulary-model's #754 output-model entry, item 6 — 2026-08-15; 2026-10-28 #754 (Derek), THE RENDER SIGNATURE. +- Render's default no longer space-joins its fields as v1's did: 3.0's default follows the order a name was read in and keeps its written separators (`str(parse("威廉·莎士比亚"))` is `'威廉·莎士比亚'`, where 2.x gave `'威廉 莎士比亚'`), decided in decisions/vocabulary-model's #754 output-model entry, item 6, and stated as rules/R6 — 2026-08-15; 2026-10-28 #754 (Derek), THE RENDER SIGNATURE. - A `.pyi` stub typing `Policy.__init__` wide and its attributes narrow is a 3.0 candidate, deferred from #334 for want of a signature list with its own sync test — 2026-08-15. - The vocabulary DATA modules keep `nameparser.config` as their home in 3.0, and it holds them and nothing else — 2026-10-28 #357 (Derek); the five shim names left it, and the five 1.x word-list names 2.2 retired went with their alias bridge — 2026-10-28 #357, REMOVAL. - Pickle-guard layout breaks landing in a minor release are shim-era friction; the guarded raise stands on its own — 2026-08-15. diff --git a/docs/design/decisions/R3-initials-honor-the-fold.md b/docs/design/decisions/R3-initials-honor-the-fold.md index 4b6a24752..76dccf71b 100644 --- a/docs/design/decisions/R3-initials-honor-the-fold.md +++ b/docs/design/decisions/R3-initials-honor-the-fold.md @@ -7,7 +7,7 @@ - A connective contributes nothing where it is joining, a part holding another name word for it to join, the part's working particles set aside, and initials like any name word where its part holds nothing else; one rule for every group, asked of the whole part and never by a word count (`John and Jane Smith` → 'J. J. S.', `Juan y Garcia` → 'J. y. G.', `Juan Velasquez y Garcia` → 'J. V. G.', `Jon Dough and` → 'J. D.', `Juan de y` → 'J. y.') — 2026-09-20 #461. - The fact is decided once per part and recorded on the token as UNJOINED_CONJUNCTION_TAG, a marker separate from UNJOINED_TAG so `family_base`, `family_particles` and case repair do not move; the core view reads it, and `Parser.revise` recomputes both marks (`revise(n, family='de y')` → 'J. y.' for `Juan Smith`) — 2026-09-20 #461. - The given group's answer is a deliberate 1.4.0 parity break (1.4.0 'J a J. S.' for `John and Jane Smith`), and a lone connective's initial restores 1.4.0's own answer (`JUAN Y GARCIA` → 'J. Y. G.', `محمد و علي` → 'م. و. ع.') — 2026-09-20 #461. -- An initial is the shortest start of its word that composes to the composed word's first character, written in the form the writer used (`e\u0301mile zola` → 'e\u0301. z.', `マイケル シ\u3099ャクソン` → 'マ. シ\u3099.'), a first code point excluded from composition kept as written (`\u095bाकिर` → '\u095b.', its nukta kept); composing the initial to NFC and taking the first letter with its following marks were declined — 2026-10-02 #585. +- An initial is the shortest start of its word that composes to the composed word's first character, written in the form the writer used (`e\u0301mile zola` → 'e\u0301. z.'), a first code point excluded from composition kept as written (`\u095bाकिर` → '\u095b.', its nukta kept); composing the initial to NFC and taking the first letter with its following marks were declined — 2026-10-02 #585. - A word is a particle only where its position makes it one, so a listed particle standing as a name word initials (`Nguyen, Van Le` → 'V. L. N.', `Anh Do` → 'A. D.') — 2026-10-19 (Derek), #761. Not standing: the skeleton migration, carried out — 2026-10-19 #761 (skeleton migration). @@ -53,3 +53,4 @@ R3's earlier history is under `decisions/R2`, which this entry does not repeat: - 2026-10-19 (Derek), #761 — A PARTICLE IS A PARTICLE BY POSITION. "Particles contribute nothing" read as contradicting `Nguyen, Van Le` → "V. L. N.", where the vocabulary's `van` initials. It does not: whether a word is a particle is settled by where it stands in the name, not by membership in the set, and `Van` there is a given name. A Then bullet now says so, carrying `Nguyen, Van Le` and `Anh Do`. No reading moved. - 2026-10-28 #357 — THE FACADE'S INITIALS VIEW GOES WITH THE FACADE (decisions/3-0-reevaluations' 2026-10-28 #357, REMOVAL entry), so the parsed name's `initials()` is the one view of this rule. What the 2026-09-01 #462 and 2026-09-13 #528 entries decided for `HumanName.initials()` — its tag reading and vocabulary fallback, the private-`Constants` and pickle, copy and keyword-constructor costs, the `_process_initial` hook break, the `太` fallback and the `Ph. D., John` grouping difference ('J. P D.' there, 'J. P. D.' here) — has no view left to bind, and rules/R3 drops its facade bullet. The facade's fallback was the one place a spliced field initialed by the vocabulary: measured 2026-10-28, `john smith` with middle `e` spliced in gave 'j. s.' on the facade, and `parse('john smith').replace(middle='e').initials()` gives 'j. e. s.', the core view initialing every word of a spliced field (rules/R3's Accepted bullet opening "This rule reads a part the parser read"). The snapshot's three `facade` rows were those `Ph. D.` initials. Open #464, a `Parser.initials` crossing, stands as the route to answering a spliced field under the parse's vocabulary. SUPERSEDES: the 2026-09-01 #462 and 2026-09-13 #528 entries, which decided the facade's view, and the 2026-09-20 #461 entry's facade half, the facade reading the mark and its no-parse paths keeping the older reading. - 2026-10-28 #939 — A CONNECTIVE BETWEEN PARTICLES: rules/R3's all-particles Except sets aside a connective that is not also particle vocabulary, standing between the part's words, as rules/R2 does, so `Fritz Freiherr und von Bar` should initial 'F. F. v. B.' where it gives 'F. u.', a deviation #939 tracks; decided and measured in decisions/R2's 2026-10-28 #754 (Derek), A CONNECTIVE AMONG PARTICLES entry. +- 2026-10-29 #754 — THE #585 KANA EXAMPLE LEAVES rules/R3. `マイケル シ\u3099ャクソン` → 'マ. シ\u3099.' (the 2026-10-02 #585 entry) gives '' since rules/R7 (a word in a script that writes no initials gives none, decisions/R7), and hangul, the other script whose syllables are written as letters, writes no initials either. The composed-spelling bullet keeps its separate-parts clause, which a Tamil vowel letter written with its length mark still reaches (`\u0b92\u0bd7வையார் கண்ணன்` → '\u0b92\u0bd7. க.', measured 2026-10-29), and takes that and a Latin letter with two accents (`E\u0302\u0301 Nguyen` → 'E\u0302\u0301. N.') as its examples. diff --git a/docs/design/decisions/R6-default-rendering-follows-the-written-name.md b/docs/design/decisions/R6-default-rendering-follows-the-written-name.md new file mode 100644 index 000000000..9757e9931 --- /dev/null +++ b/docs/design/decisions/R6-default-rendering-follows-the-written-name.md @@ -0,0 +1,16 @@ +# R6 — the default rendering follows the written name + +## Standing + +- The default `str()` and `render()` lay a name out in `ParsedName.order`, the order it was read in, and keep the separator written between two words side by side, in the same order, both as written and as laid out, normalized by kind; a family comma is never kept, and a comma between the family and its suffix is (decisions/vocabulary-model's #754 output-model entry, item 6; the never-kept family comma narrowed to one between name words by the A SUFFIX COMMA entry below) — 2026-10-28 #754 (Derek). +- `render(spec: str | None = None)`: `None` is the order-aware default, and a caller's spec renders exactly as written, so passing 2.x's default spec keeps given-first output (decisions/3-0-reevaluations, THE RENDER SIGNATURE) — 2026-10-28 #754 (Derek). +- A comma with only a suffix after it stays as a suffix comma, whatever comma the parse recorded, so `Smith, Jr.` renders 'Smith, Jr.' — 2026-10-29 #754 (Derek), A SUFFIX COMMA. +- Two words are side by side as written when they are consecutive in `ParsedName.tokens`; a comma between two name words is the family comma, dropped also where P1's fold leaves its pair side by side; credentials written apart keep the suffix field's comma join — 2026-10-29 #754. + +Open: whether a comma between two titles written after a comma, which the layout moves to the front, is kept, as the decided text's "one comma the parse reads" keeps it today, though it reads back as a family comma (`John Smith, Jr., Dr., Prof.` → 'Dr., Prof. John Smith, Jr.', and with one comma `John Smith Dr., Prof.` → 'Dr., Prof. John Smith'), or dropped, keeping a comma only before a suffix; rules/R6 records today's reading as Accepted. Also: how a pack's CLDR-shaped render pattern is reached, (a) through a convention recorded on the name or (b) through the parser (decisions/vocabulary-model's #754 render-patterns entry); this rule reads `order` alone and forecloses neither. + +## Log + +- 2026-10-28 #754 (Derek) — DECIDED, as item 6 of decisions/vocabulary-model's #754 output-model entry, which holds the reasons and the measurements: the default rendering follows the order a name was read in and keeps its written separators in a normalized form, through `render(spec: str | None = None)`, a family-first layout keeping the title first and the suffix last. This file records the rule that decision made, rules/R6. +- 2026-10-29 #754 — IMPLEMENTED (sub-phase 4e). `ParsedName.order` is the order assign read the name under, `GIVEN_FIRST` after a family comma and the declared `name_order` where no positional read happened; it carries `ADDED_IN = "3.0.0"`, so a 2.x pickle loads with `None` and renders exactly as 2.x did, by 2.x's default spec, separators not kept (the decided "a 2.x pickle rendering as today"; a first build laid such a name out given-first but kept its separators, so a 2.8.0 pickle of `John Smith, Jr.` rendered 'John Smith, Jr.' where 2.8.0 gave 'John Smith Jr.', found by review), and it is left out of `==` and `comparison_key()`, validated as `Policy.name_order` is. Where the decided text left a choice, the reading taken: two words are side by side as written when they are consecutive in `ParsedName.tokens`, so a marker word the parse dropped, or a field `replace()` spliced in, leaves the pair apart and takes the layout's joiner; the family comma, which the parse records nowhere on the name, is told by its neighbours, a comma between two name words being one, which drops it also after P1's fold (`Smith, de Mesnil Jean` → 'Smith de Mesnil Jean', a rendering read back given-first, the decided text's cost); credentials written apart keep the suffix field's comma join (`John Smith, MD, PhD` → 'John Smith, MD, PhD') and credentials written side by side keep their space (`John Smith MD PhD` → 'John Smith MD PhD'), as the suffix field already joined them (rules/R1); and a comma between two titles written after a comma, which the layout moves to the front, is kept, as the decided text reads, at the cost of its read-back, left open above. A first build kept a comma only before a suffix, a narrowing of the decided text a review found to depart from it in that title shape alone, so it was withdrawn rather than recorded; the second review found the shape's reach wider than first written, a one-comma name reaching it too (`John Smith Dr., Prof.`, its old rendering 'Dr. Prof. John Smith' reading back exactly), in no corpus entry but in every one of 108 two-part renderings of a generated grid that keep such a comma. Measured 2026-10-29 over the committed corpus's 6,556 distinct entries (`snapshot.corpus_entries()`), each under its declared order, against `9210f221` in a detached worktree, both `nameparser.__file__` paths asserted, each entry's `str()`, `initials()` and `parse(str(name)).as_dict()` taken with the same parser in each tree and compared: `str()` moves for 1,034 entries (543 of them only in `corpus_cldr.jsonl`), 548 laid out family-first again (497 declared `FAMILY_FIRST`, 2 `FAMILY_FIRST_GIVEN_LAST`, 49 by script order), 241 keeping a written nothing, dot or full-width comma between two words, 231 keeping a comma (before a suffix, or between two titles), 13 both of the last two, and one an Arabic comma before a suffix kept where the suffix field had joined with an ASCII one; `initials()` moves for 545 (97 only in `corpus_cldr.jsonl`), every one a Han, Hangul or kana initial dropped (rules/R7); `parse(str(name))` reads back differently for 1,318 entries on the base and 491 on this change, the 4 failing now that read back on the base being the title-comma shape (a count over the corpus, whose one one-comma instance is rules/R6's own example). The snapshot, which sees `str()` only through a case view where repair changes the text, moved `initials` for 538 of the entries both records hold, `capitalized_force` for 139 and `capitalized` for 20. +- 2026-10-29 #754 (Derek), A SUFFIX COMMA — A COMMA WITH ONLY A SUFFIX AFTER IT STAYS AS A SUFFIX COMMA, WHATEVER STRUCTURE THE PARSE RECORDED. A review found that rules/R6's Except, then reading "A family comma is never kept", was contradicted by the shipped code where the part after a family comma holds suffixes alone: `Smith, Jr.` (read with a family comma) renders 'Smith, Jr.', as do `Smith, MD`, `John, Jr.` and `Smith, Jr., John`, which keeps both its commas ('Smith, Jr., John', the parse reading `John` as a second suffix entry). The code stays and the rule is narrowed: the family comma never kept is one between name words, and a comma before a suffix is a suffix comma for the rendering, as the decided text keeps the comma between the family and its suffix. Rejected: dropping the comma by the parse's recorded structure, which `ParsedName` does not carry and which would render `Smith, Jr.` as 'Smith Jr.'. Not a render question: `KIM, AE-RA` keeps its comma ('KIM, AE-RA') because the parse reads `AE-RA` as a credential (suffix 'AE-RA', family 'KIM'), where a reader sees the Korean given name Ae-ra; that is the parse's reading to revisit, and the rendering follows it. diff --git a/docs/design/decisions/R7-no-initials-in-a-script-that-writes-none.md b/docs/design/decisions/R7-no-initials-in-a-script-that-writes-none.md new file mode 100644 index 000000000..e1e45ca16 --- /dev/null +++ b/docs/design/decisions/R7-no-initials-in-a-script-that-writes-none.md @@ -0,0 +1,11 @@ +# R7 — no initials in a script that writes none + +## Standing + +- A word whose first letter is in Han, Hangul or kana (`_policy._NO_INITIALS`, the scripts the parse's initial veto reads, #320) contributes nothing to `initials()`, the test asked of the letter's composed spelling — 2026-10-28 #754 (Derek). + +Open: none in this file. + +## Log + +- 2026-10-28 #754 (Derek) — DECIDED, as part of item 6 of decisions/vocabulary-model's #754 output-model entry (the render defaults): `initials()` gives nothing for a word in a script with no initials, where it gave the first character with a period (`'王.'`). Implemented 2026-10-29 (sub-phase 4e) as a rule of its own rather than a clause of rules/R3, since it reads the word's script, a signal R3 does not read. Measured over the committed corpus's distinct entries, each under its declared order, against `9210f221` (the recipe is decisions/R6's 2026-10-29 entry): every `initials()` move is a Han, Hangul or kana initial dropped, and no other initial moves. diff --git a/docs/design/decisions/README.md b/docs/design/decisions/README.md index 9769dec53..378a9e435 100644 --- a/docs/design/decisions/README.md +++ b/docs/design/decisions/README.md @@ -124,6 +124,8 @@ Entry conventions: - [R3 — initials honor the fold](R3-initials-honor-the-fold.md) - [R4 — case repair reads the unjoined mark](R4-case-repair-reads-the-unjoined-mark.md) - [R5 — the case-repair gate](R5-case-repair-gate.md) +- [R6 — the default rendering follows the written name](R6-default-rendering-follows-the-written-name.md) +- [R7 — no initials in a script that writes none](R7-no-initials-in-a-script-that-writes-none.md) ## Construction & configuration diagnostics (D) diff --git a/docs/design/decisions/render-default.md b/docs/design/decisions/render-default.md index 18af0db24..e1defb817 100644 --- a/docs/design/decisions/render-default.md +++ b/docs/design/decisions/render-default.md @@ -2,7 +2,7 @@ ## Standing -- The default spec is '{title} {given} "{nickname}" {middle} {family} ({maiden}) {suffix}', and a parenthesized maiden re-parsing as a nickname is its accepted cost (`Jane (nee Jones) Smith` renders 'Jane Smith (Jones)', which reads back with nickname 'Jones'); a née template that round-tripped losslessly was declined on presentation grounds — 2026-07-18. +- The given-first layout of the default rendering is '{title} {given} "{nickname}" {middle} {family} ({maiden}) {suffix}' (since 3.0 the default follows the order a name was read in and its written separators, rules/R6 and decisions/R6, and this is the layout of a name read given-first), and a parenthesized maiden re-parsing as a nickname is its accepted cost (`Jane (nee Jones) Smith` renders 'Jane Smith (Jones)', which reads back with nickname 'Jones'); a née template that round-tripped losslessly was declined on presentation grounds — 2026-07-18. Elsewhere: the v1 facade's own default `string_format`, which omitted the maiden name, so `str()` of a `HumanName` could not show it until #357 removed the facade — decisions/R5's 2026-08-29 WHAT THE OVERRIDE DOES AND DOES NOT PROMISE entry. diff --git a/docs/design/rules/R-rendering-and-views.md b/docs/design/rules/R-rendering-and-views.md index 782601df9..0b12fe33c 100644 --- a/docs/design/rules/R-rendering-and-views.md +++ b/docs/design/rules/R-rendering-and-views.md @@ -1,4 +1,4 @@ ## Rendering & views (R) -Background: parsing produces words with roles; every string a caller reads is assembled from those words on request. Nothing about rendering changes the parse, and nothing about reading a field mutates anything. The default view renders '{title} {given} "{nickname}" {middle} {family} ({maiden}) {suffix}' — the choice and its declined née-template alternative are decisions/render-default. +Background: parsing produces words with roles; every string a caller reads is assembled from those words on request. Nothing about rendering changes the parse, and nothing about reading a field mutates anything. The default view lays a name out in the order it was read in and keeps its written separators (R6); a name read given-first renders '{title} {given} "{nickname}" {middle} {family} ({maiden}) {suffix}' — that choice and its declined née-template alternative are decisions/render-default. diff --git a/docs/design/rules/R3-initials-honor-the-fold.md b/docs/design/rules/R3-initials-honor-the-fold.md index 09fa0238f..3469f8f17 100644 --- a/docs/design/rules/R3-initials-honor-the-fold.md +++ b/docs/design/rules/R3-initials-honor-the-fold.md @@ -18,10 +18,11 @@ "Jon Dough and" → initials="J. D." "Juan de y" → initials="J. y." ``` -- **The first letter is the one the word's composed spelling begins with**, written in the form the writer used: a letter written as a base letter followed by its combining accent initials whole, and so does a syllable written as its separate parts, wherever the two compose to one character; a mark that never composes with its letter (a nukta after ज, whose precomposed U+095B is excluded from composition) is left out of the initial, while the precomposed letter keeps it. +- **The first letter is the one the word's composed spelling begins with**, written in the form the writer used: a letter written as a base letter followed by its combining accents initials whole, and so does a letter written as its separate parts (a Tamil vowel letter and its length mark), wherever they compose to one character; a mark that never composes with its letter (a nukta after ज, whose precomposed U+095B is excluded from composition) is left out of the initial, while the precomposed letter keeps it. ``` "émile zola" → initials="e\u0301. z." - "マイケル ジャクソン" → initials="マ. シ\u3099." + "Ế Nguyen" → initials="E\u0302\u0301. N." + "ஔவையார் கண்ணன்" → initials="\u0b92\u0bd7. \u0b95." ``` - **Each group initials in the order its field reads**: written order, except folded family words (O3, P6), which initial before the rest of the family exactly as they render before it (R1). Which words a group contributes is this rule's question, and the order they contribute in is the field's; the field and this view never disagree about order, and can differ about membership — the family field of "Dr. Juan Q. Xavier de la Vega III" is de la Vega, where the initials take its base — so the field settles order and nothing else. ``` diff --git a/docs/design/rules/R4-case-repair-reads-the-unjoined-mark.md b/docs/design/rules/R4-case-repair-reads-the-unjoined-mark.md index b7cd609f3..ca3b01725 100644 --- a/docs/design/rules/R4-case-repair-reads-the-unjoined-mark.md +++ b/docs/design/rules/R4-case-repair-reads-the-unjoined-mark.md @@ -35,7 +35,7 @@ "john smith psyd" → capitalized="John Smith PsyD" "SIG.RA MARIA ROSSI" → capitalized="Sig.ra Maria Rossi" "dott.ssa anna bianchi" → capitalized="Dott.ssa Anna Bianchi" - "Dr. med. univ. Margit Popp, MSc" → capitalized_forced="Dr. Med. Univ. Margit Popp MSc" + "Dr. med. univ. Margit Popp, MSc" → capitalized_forced="Dr. Med. Univ. Margit Popp, MSc" "MSc Dr. med. univ." → capitalized_forced="MSc Dr. Med. Univ." ``` - **A particle is written in lowercase**, but a particle the vocabulary records a casing for takes that casing, the entry being how the word is written wherever it stands. @@ -69,15 +69,15 @@ "john smith vi" → capitalized="John Smith VI" "john smith ix" → capitalized="John Smith IX" "john smith iii" → capitalized="John Smith III" - "john smith, v" → capitalized="John Smith V" + "john smith, v" → capitalized="John Smith, V" "john smith mba" → capitalized="John Smith MBA" "john smith mcse" → capitalized="John Smith MCSE" - "john smith, otr/l" → capitalized="John Smith OTR/L" - "JOHN SMITH, FNP-BC" → capitalized="John Smith FNP-BC" + "john smith, otr/l" → capitalized="John Smith, OTR/L" + "JOHN SMITH, FNP-BC" → capitalized="John Smith, FNP-BC" "john smith pa-c" → capitalized="John Smith PA-C" "john smith jr" → capitalized="John Smith Jr" · boundary - "John Smith, otr/l" → capitalized="John Smith otr/l" · boundary - "John Smith, otr/l" → capitalized_forced="John Smith OTR/L" · boundary + "John Smith, otr/l" → capitalized="John Smith, otr/l" · boundary + "John Smith, otr/l" → capitalized_forced="John Smith, OTR/L" · boundary "john smith-jones" → capitalized="John Smith-Jones" · boundary "jean-luc picard" → capitalized="Jean-Luc Picard" · boundary "dipl.-ing john smith" → capitalized="Dipl.-Ing John Smith" · boundary diff --git a/docs/design/rules/R6-default-rendering-follows-the-written-name.md b/docs/design/rules/R6-default-rendering-follows-the-written-name.md new file mode 100644 index 000000000..fbafaa595 --- /dev/null +++ b/docs/design/rules/R6-default-rendering-follows-the-written-name.md @@ -0,0 +1,69 @@ +# R6 — the default rendering follows the written name + +**When:** a parsed name is rendered with no format of the caller's, by `str()` or by `render()` with no spec, as in "김민준" or "John Smith, Jr.". + +**Then:** the name is laid out in the order it was read in, and two words that stand one directly after the other, in the same order, both as written and as laid out keep the separator written between them, normalized. + +- **The layout follows the order.** A name read given-first, and every name with a family comma, is laid out title, given name, nickname in quotes, middle names, family name, maiden name in parentheses, suffix; a name read family-first keeps the title first and the suffix last, and puts the family name with its maiden name first among the name words, then the given and middle names in the order's own sequence, the nickname beside the given name. + ``` + "Dr. Wang Xiaoming Jr." family-first → str="Dr. Wang Xiaoming Jr." + "Nguyen Van Anh" family-first-given-last → str="Nguyen Van Anh" + "Wang Xiaoming, Jr." family-first → str="Wang Xiaoming, Jr." + ``` +- **The separator is normalized by its kind.** Nothing stays nothing; whitespace of any kind and length, the ideographic space included, becomes one space; an interpunct or a nakaguro the name is divided at stands alone, with no space around it; and one comma is written with no space before it and one after if ASCII or Arabic, and alone if full-width, a full-width comma carrying its own width. + ``` + "王小明先生" → str="王小明先生" + "山田 太郎" → str="山田 太郎" + "ジョン ・ スミス" → str="ジョン・スミス" + "John Smith ,Jr." → str="John Smith, Jr." + "John Smith, Jr." → str="John Smith,Jr." + ``` +- **Every other pair takes the layout's own joiner**: a space, or the decoration standing between the two words' fields (the nickname's quotes, the maiden name's parentheses), and credentials not written side by side are joined with a comma as the suffix field joins them (R1). That covers a delimiter, a marker word, two commas, a hyphen, a slash, a zero-width or directional mark, and any two words the layout moves apart or turns round, a family comma's pair among them. + ``` + "John (Jack) Smith" → str="John \u0022Jack\u0022 Smith" + "Jane Smith née Jones, PhD" → str="Jane Smith (Jones) PhD" + "Smith, John" family-first → str="John Smith" + "Smith, John, Jr." → str="John Smith Jr." + ``` + +**Because:** a rendering should give back the name in the order the parse read it and with the separators its writer chose, its spacing normalized. A format a caller writes renders exactly as written, its order and its joiners, so a caller wanting another layout or the native spacing passes one, and the text as written stays in the parsed name's original. + +``` +"김민준" → str="김민준" +"威廉·莎士比亚" → str="威廉·莎士比亚" +"威廉 · 莎士比亚" → str="威廉 · 莎士比亚" +"John Smith, Jr." → str="John Smith, Jr." +"Smith, John" → str="John Smith" · boundary +``` + +**Except:** + +- **A family comma between name words is never kept**, also where its pair stays side by side in the same order: when the part after it went to the family (P1's fold after a family comma), the comma stands between two family words and is dropped there too. + ``` + "Smith, de Mesnil Jean" → str="Smith de Mesnil Jean" + ``` + +**Accepted:** + +- Two writings of one name can render differently, the rendering following each writing: "John Smith, Jr." keeps its comma where "Smith, John, Jr." has none to keep, its suffix laid out away from the given name it was written after. +- The title stays first under a family-first order, where most of CLDR's surname-first patterns put it after the family name: the title is placed only where the parse reads it back, and under a family-first order the parse reads a bare title only at the front (#938). + ``` + "Senator Wang Xiaoming" family-first → str="Senator Wang Xiaoming" + ``` +- A rendering need not read back as the name it came from. A family-comma name under a family-first order is laid out given-first, and the same parser reads the result family-first; a family comma in a name written in Han, Hangul or kana, a shape nobody writes (W3), reads back family-first by its script; a family comma dropped after P1's fold leaves a name read given-first; and a comma between two titles written after a comma, which the layout moves to the front, is kept, and reads back as a family comma, from whichever comma part the titles come. + ``` + "김, 민준" → str="민준 김" + "John Smith, Jr., Dr., Prof." → str="Dr., Prof. John Smith, Jr." + "John Smith Dr., Prof." → str="Dr., Prof. John Smith" + ``` +- A comma with only a suffix after it stays as a suffix comma, whatever comma the parse read it as: a family name and the suffixes after it keep their comma, as the comma between a family name and its suffix does. + ``` + "Smith, Jr." → str="Smith, Jr." + "Smith, MD" → str="Smith, MD" + "Smith, Jr., John" → str="Smith, Jr., John" + ``` +- Two equal names can render differently. The order a name was read in is not compared, so a name loaded from a 2.x pickle, which recorded none, renders exactly as 2.x rendered it, given-first and space-joined, where a fresh parse of the same text renders as written. (The shape needs a pickle written by an older release, so no example line.) + +--- +**Signal:** separator + none in the name: the order the name was read in +**history:** decisions/R6 · **implemented:** nameparser/_render.py, nameparser/_pipeline/_assemble.py diff --git a/docs/design/rules/R7-no-initials-in-a-script-that-writes-none.md b/docs/design/rules/R7-no-initials-in-a-script-that-writes-none.md new file mode 100644 index 000000000..81c23796d --- /dev/null +++ b/docs/design/rules/R7-no-initials-in-a-script-that-writes-none.md @@ -0,0 +1,30 @@ +# R7 — no initials in a script that writes none + +**When:** initials are asked of a parsed name holding a word that opens with a Han ideograph, a Hangul syllable or kana, as in "김민준". + +**Then:** a word whose first letter is in a script that writes no initials contributes nothing to the initials, and a word in another script beside it still gives its own. + +**Because:** Han, Hangul and kana abbreviate no name to a letter, so the first character with a full stop after it is no initial anyone writes. The parse already reads no word in them as an initial, and no period after one as an abbreviation (H2), so the parse and this view answer that question alike. + +``` +"김민준" → initials="" +"マイケル ジャクソン" → initials="" +"王 小明" → initials="" +"김민준 John" → initials="J." · boundary +``` + +**Precedence:** + +- **A word R3 would initial** ("김민준", "王 小明"): R7 wins, so the word contributes nothing, since R3's first letter is a letter only in a script that writes initials, and these write none. + +**Accepted:** + +- The scripts are read by character, as the parse reads them for its own initials: a Hangul syllable written as conjoining jamo counts, composed, while compatibility jamo and the ideographic zero, which no range the parse reads holds, still initial. + ``` + "ㄱㄴ 김" → initials="ㄱ." + ``` +- A name written wholly in those scripts has empty initials, where 2.1 through 2.8 gave its first characters (`김민준` gave '민. 김.'); a caller wanting a character per word takes it from the fields. + +--- +**Signal:** script +**history:** decisions/R7 · **implemented:** nameparser/_render.py diff --git a/docs/design/rules/README.md b/docs/design/rules/README.md index b8528ffa5..618500845 100644 --- a/docs/design/rules/README.md +++ b/docs/design/rules/README.md @@ -220,6 +220,8 @@ Terms the rules use without defining them each time, each with the rule that def - [R3 — initials honor the fold](R3-initials-honor-the-fold.md) - [R4 — case repair reads the unjoined mark](R4-case-repair-reads-the-unjoined-mark.md) - [R5 — the case-repair gate](R5-case-repair-gate.md) +- [R6 — the default rendering follows the written name](R6-default-rendering-follows-the-written-name.md) +- [R7 — no initials in a script that writes none](R7-no-initials-in-a-script-that-writes-none.md) ## [Construction & configuration diagnostics (D)](D-construction-and-configuration-diagnostics.md) diff --git a/docs/design/rules/S12-credential-split-across-a-space.md b/docs/design/rules/S12-credential-split-across-a-space.md index 9e3c6c9fe..80f590c2c 100644 --- a/docs/design/rules/S12-credential-split-across-a-space.md +++ b/docs/design/rules/S12-credential-split-across-a-space.md @@ -16,7 +16,7 @@ - **Case repair** writes the pair as it writes the one-word spelling, the letters of the two words cased as their fold is, and a pair written in two cases is the writer's spelling as the one-word spelling would be (R5). ``` "john smith pharm d" → capitalized="John Smith Pharm D" - "john smith, PHARM D" → capitalized="John Smith Pharm D" + "john smith, PHARM D" → capitalized="John Smith, Pharm D" ``` - **The count decides.** At the end of a name it needs the words to spare S4 asks of a bare member; after a comma, the name words C4 counts before the comma; ending the given part after a family comma, it reads as S5 reads a member there, its writing saying nothing else. ``` diff --git a/docs/migrate.rst b/docs/migrate.rst index ce7f07c6a..573842063 100644 --- a/docs/migrate.rst +++ b/docs/migrate.rst @@ -14,7 +14,9 @@ The 3.0 API is the one 2.0 introduced — ``parse``, ``Parser``, :mod:`nameparser.locales` — and its names and signatures carry into 3.0 gaining additions only. The vocabulary data modules in ``nameparser.config`` (``titles``, ``particles`` and the rest) stay. -Separately, the output model changes in 3.0; details with the 3.0 +Separately, the output model changes in 3.0: ``str()`` now renders a +name in the order it was read in, with the separators it was written +with (`Changed in 3.0`_). Further output changes come with the 3.0 alphas. The full 1.x documentation remains the reference for ``HumanName`` and @@ -522,11 +524,11 @@ does (:ref:`east-asian-names` explains the conventions). ('김', '민준') 1.4 read the first as ``first="毛"``/``last="泽东"``, and left the -second whole in ``first``. The Korean one also changes what the name -*renders* as — ``str(parse("김민준"))`` is ``"민준 김"``, where 1.4's -``str(HumanName("김민준"))`` was ``"김민준"`` — because the split -inserts a token boundary that the default format then writes -given-name-first. +second whole in ``first``. Through 2.8 the Korean one also changed what +the name *rendered* as — ``str(parse("김민준"))`` was ``"민준 김"``, +where 1.4's ``str(HumanName("김민준"))`` was ``"김민준"`` — because the +split inserted a token boundary that the default format then wrote +given-name-first. 3.0 renders ``"김민준"`` again (`Changed in 3.0`_). A third shape changes even though nothing splits it. 1.4 routed a lone token to ``first`` whatever it was, so an unspaced Chinese or Japanese @@ -563,9 +565,9 @@ token moves from the given name to the family name exactly as 1.4 read the spaced ones as ``first="高橋"``/``last="みなみ"`` and ``first="山田"``/``last="エミ"``, and put the unspaced one whole in -``first``. The spaced shapes change what the name renders as too: -``str(parse("高橋 みなみ"))`` is ``"みなみ 高橋"``, where 1.4 wrote -``"高橋 みなみ"``. A name written *wholly* in katakana is deliberately +``first``. Through 2.8 the spaced shapes changed what the name rendered +as too: ``str(parse("高橋 みなみ"))`` was ``"みなみ 高橋"``, where 1.4 +and 3.0 write ``"高橋 みなみ"``. A name written *wholly* in katakana is deliberately left alone — it may be a transcribed foreign name already in given-first order or a Japanese name's reading written family-first, and the script cannot tell which (see :ref:`east-asian-names` to opt @@ -588,13 +590,13 @@ it in ``first``; 2.1 sees two: The two divide the same way and land in opposite fields, because the katakana pair keeps its source order while the kanji pair takes the -family-first rule. Separating also changes the rendered string, the -same way the Korean split does: the dot comes back as a space, so -``str(parse("マイケル・ジャクソン"))`` is ``"マイケル ジャクソン"``, -where 1.4 wrote ``"マイケル・ジャクソン"``. That reaches delimited content -too — the nickname in ``"山田 太郎 (マイケル・ジャクソン)"`` was -``"マイケル・ジャクソン"`` under 1.4 and is ``"マイケル ジャクソン"`` -now. +family-first rule. Separating also changes the ``nickname`` and +other fields, which join their words with a space: the nickname in +``"山田 太郎 (マイケル・ジャクソン)"`` was ``"マイケル・ジャクソン"`` +under 1.4 and is ``"マイケル ジャクソン"`` now. Through 2.8 the dot came +back as a space in the rendered string as well +(``str(parse("マイケル・ジャクソン"))`` was ``"マイケル ジャクソン"``); +3.0 renders it with its dot, as 1.4 did (`Changed in 3.0`_). Turning the East Asian readings off ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -608,8 +610,8 @@ like ``威廉·莎士比亚``, and a separator only between classified-script characters — each side judged on its own — where the katakana dot is unconditional) are decided in tokenization rather than by policy, so a name written with either -still divides at the dot, and still renders with a space, whatever -those two fields are set to. +still divides at the dot whatever those two fields are set to (and +through 2.8 rendered with a space there). Changed in 2.3 through 2.8 ~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -920,3 +922,50 @@ grep your fixtures for, with what 1.4 read: 'Lord Chancellor' >>> parse("Lord Justice Leveson").title 'Lord Justice' + +Changed in 3.0 +~~~~~~~~~~~~~~ + +``str()`` and :meth:`~nameparser.ParsedName.render` with no argument +lay a name out in the order it was read in, recorded as +:attr:`ParsedName.order `, and keep the +separator its writer put between two words that stay side by side, +normalized: nothing stays nothing, any whitespace (the ideographic +space included) becomes one space, a dividing middle dot stays, and a +comma before a suffix stays. Through 2.8 every name rendered +given-name-first with its words joined by spaces: + +.. doctest:: + + >>> str(parse("김민준")), str(parse("威廉·莎士比亚")) + ('김민준', '威廉·莎士比亚') + >>> from nameparser import FAMILY_FIRST, Parser, Policy + >>> str(Parser(policy=Policy(name_order=FAMILY_FIRST)).parse("Nagy Laszlo")) + 'Nagy Laszlo' + >>> str(parse("John Smith, Jr.")), str(parse("Smith, John, Jr.")) + ('John Smith, Jr.', 'John Smith Jr.') + +2.8 gave ``'민준 김'``, ``'威廉 莎士比亚'``, ``'Laszlo Nagy'`` and +``'John Smith Jr.'`` for the first four. A family comma is never kept, +so ``Smith, John`` still renders ``'John Smith'``. To keep 2.x's +output, pass 2.x's default as a spec: a spec you write renders exactly +as written, in its order and with its joiners. + +.. doctest:: + + >>> v2_spec = '{title} {given} "{nickname}" {middle} {family} ({maiden}) {suffix}' + >>> parse("김민준").render(v2_spec) + '민준 김' + +A :class:`~nameparser.ParsedName` pickled by 2.x has no ``order`` and +renders exactly as it did under 2.x, while a fresh parse of the same text +renders as written; the two still compare equal, since ``order`` is +left out of ``==`` and :meth:`~nameparser.ParsedName.comparison_key`. +And :meth:`~nameparser.ParsedName.initials` gives nothing for a word +in Han, Hangul or kana, scripts with no initials, where 2.8 gave its +first character: + +.. doctest:: + + >>> parse("김민준").initials(), parse("Kim Minjun").initials() + ('', 'K. M.') diff --git a/docs/release_log.rst b/docs/release_log.rst index 0e85a9fc0..fe0d6dc5e 100644 --- a/docs/release_log.rst +++ b/docs/release_log.rst @@ -12,6 +12,11 @@ Release Log - **Remove HumanName, Constants and the rest of the 1.x compatibility layer.** ``from nameparser import HumanName`` raises ``ImportError``, where 1.4.0 through 2.8.0 imported it (2.8.0 warning where it was constructed); ``parse("Dr. Juan de la Vega")`` reads the same name, with given ``Juan`` and family ``de la Vega``. ``nameparser.parser``, ``nameparser.util``, ``nameparser.config``'s ``Constants``, ``CONSTANTS`` and managers, and the five word-list names and two module paths 2.2 renamed go too, and a pickled ``HumanName`` or ``Constants`` no longer loads; the word lists in ``nameparser.config`` stay. See :doc:`migrate`. :issue:`357` + **Behavior Changes** + + - **Render a name in the order it was read in, keeping its written separators.** ``str(parse("김민준"))`` gives ``'김민준'``, where 2.1.0 through 2.8.0 gave ``'민준 김'``; a name read family-first renders family-first, and a comma before a suffix stays (``John Smith, Jr.``, ``Smith, Jr.``), while a family comma between name words never does (``Smith, John`` gives ``'John Smith'``). A spec you pass to ``render()`` renders as written, so 2.x's default spec keeps given-first output, and a name pickled by 2.x renders as it did. ``initials()`` gives nothing for a word in Han, Hangul or kana. The new ``ParsedName.order`` records the order; ``render()``'s spec now defaults to ``None``. See :doc:`migrate`. :issue:`754` + - **Fix Policy(name_order=...) accepting a set.** ``Policy(name_order=frozenset(FAMILY_FIRST))`` raises ``TypeError``, where 2.0.0 through 2.8.0 accepted it as an order under some hash seeds and raised ``ValueError`` under others; pass the tuple. :issue:`754` + * 2.8.0 - October 28, 2026 **nameparser 2.8** is the last 2.x feature release. It warns about everything 3.0 removes, chiefly ``HumanName`` and the rest of the 1.x compatibility layer, so that code can move to ``parse()`` while 2.x still runs it. It also carries on 2.7's reading of titles that are also given names: a title only inside a title phrase. After 2.8 the 2.x line takes fixes only, and new work goes into 3.0. Highlights: diff --git a/docs/usage.rst b/docs/usage.rst index 47f1140b9..9d55f884b 100644 --- a/docs/usage.rst +++ b/docs/usage.rst @@ -734,6 +734,20 @@ Dicts and strings >>> name.initials() 'J. Q. X. V.' +``str()``, like ``render()`` with no spec, lays the name out in the +order it was read in (:attr:`ParsedName.order +`) and keeps the separator written between +two words that stay side by side, normalized: nothing stays nothing, +any run of whitespace becomes one space, and a comma before a suffix +stays. A spec you pass renders exactly as written, in its own order: + +.. doctest:: + + >>> str(parse("김민준")), str(parse("John Smith, Jr.")) + ('김민준', 'John Smith, Jr.') + >>> parse("김민준").render("{given} {family}") + '민준 김' + Fixing case ----------- diff --git a/nameparser/_pipeline/_assemble.py b/nameparser/_pipeline/_assemble.py index 8c7e10d2d..5254e7c42 100644 --- a/nameparser/_pipeline/_assemble.py +++ b/nameparser/_pipeline/_assemble.py @@ -1,7 +1,8 @@ """Not a stage: converts the final ParseState into a public ParsedName. Consumes: tokens (all roles set, and their tags, which name each -token's reading), dropped, ambiguities (by index; +token's reading), dropped, order and structure (for ParsedName.order), +ambiguities (by index; one carrying ``field_tail`` is worded from its word's final role, #626), and segments, for the part a withdrawn connective report's letter ends (rules/P8, #721). @@ -11,7 +12,8 @@ that would produce an invalid result dies HERE, not in a renderer three layers away. Reads: Policy.middle_as_family, folding a report's other field as the -policy folds a middle; and Lexicon.surnames, suffix_acronyms and +policy folds a middle; Policy.name_order, for ParsedName.order where +no positional read happened; and Lexicon.surnames, suffix_acronyms and suffix_acronyms_ambiguous, for the source of a token's reading where no tag gives it. @@ -34,14 +36,15 @@ AGNOMEN_TAG, AMBIGUOUS_ACRONYM_TAG, AMBIGUOUS_WORD_TAG, FIELD_READING, NAME_ROLES, SHAPE_ACRONYM_TAG, SPLIT_CREDENTIAL_TAG, SPLIT_MEMBER_TAG, TITLE_AMBIGUOUS_TAG, Beside, Deferred, ParseState, PendingAmbiguity, + Structure, ) from nameparser._pipeline._vocab import ( _PERIOD_ABBREV, name_source, suffix_kind, ) from nameparser._types import ( - FOLDED_TAG, UNJOINED_CONJUNCTION_TAG, UNJOINED_TAG, Ambiguity, - AmbiguityKind, ParsedName, Reading, ReadingKind, ReadingSource, Role, - Token, + FOLDED_TAG, GIVEN_FIRST, UNJOINED_CONJUNCTION_TAG, UNJOINED_TAG, + Ambiguity, AmbiguityKind, ParsedName, Reading, ReadingKind, + ReadingSource, Role, Token, ) #: Every Reading a token can take, built once: a `Reading` is three @@ -348,4 +351,20 @@ def assemble(state: ParseState) -> ParsedName: state.policy.middle_as_family))) return ParsedName(original=state.original, tokens=tuple(final.values()), - ambiguities=tuple(ambiguities)) + ambiguities=tuple(ambiguities), + order=_read_order(state)) + + +def _read_order(state: ParseState) -> tuple[Role, Role, Role]: + """ParsedName.order: the order assign read the name in, given-first + after a family comma (which fixes the family without consulting + an order), and the declared name_order where no positional read + happened.""" + # rules/R6: "the name is laid out in the order it was read in" -- + # this records that order for the rendering to read (decisions/R6, + # #754) + if state.order is not None: + return state.order + if state.structure is Structure.FAMILY_COMMA: + return GIVEN_FIRST + return state.policy.name_order diff --git a/nameparser/_policy.py b/nameparser/_policy.py index 88f4b6c68..c6fc2128c 100644 --- a/nameparser/_policy.py +++ b/nameparser/_policy.py @@ -13,7 +13,9 @@ from typing import Any from nameparser._types import ( - Role, _coerce_enum, _guarded_getstate, _guarded_setstate, + FAMILY_FIRST, FAMILY_FIRST_GIVEN_LAST, GIVEN_FIRST, Role, _coerce_enum, + _guarded_getstate, _guarded_setstate, _reject_bare_string_order, + _require_iterable, _validated_order, ) @@ -261,21 +263,9 @@ def matcher(text: str) -> bool: return matcher -# Order-spec constants (#270). Each reads as its contents because roles -# are named given/family, not first/last. - -#: Western order (the default): the first word of positional input is -#: the given name, the last is the family name, everything between is -#: middle. One of the three valid ``Policy(name_order=...)`` values. -GIVEN_FIRST = (Role.GIVEN, Role.MIDDLE, Role.FAMILY) -#: Family name first, given name second, remaining words middle -#: (e.g. Hungarian, or East Asian order). One of the three valid -#: ``Policy(name_order=...)`` values. -FAMILY_FIRST = (Role.FAMILY, Role.GIVEN, Role.MIDDLE) -#: Family name first, given name LAST, words between middle -#: (e.g. Vietnamese full-name order). One of the three valid -#: ``Policy(name_order=...)`` values. -FAMILY_FIRST_GIVEN_LAST = (Role.FAMILY, Role.MIDDLE, Role.GIVEN) +# Order-spec constants (#270), defined in _types beside Role since +# ParsedName.order holds one (3.0, #754) and _types imports nothing +# internal; re-exported here, where Policy validates name_order. _ORDER_CONSTANT_NAMES: dict[tuple[Role, ...], str] = { GIVEN_FIRST: "GIVEN_FIRST", @@ -362,37 +352,6 @@ def _order_repr(value: tuple[Role, ...]) -> str: }) -def _reject_bare_string_order(value: object, field_name: str) -> None: - # tuple("gmf") would be ("g", "m", "f") -- catch the bare string - # with the same TypeError every other iterable field raises. - # Single-sourced: called from Policy AND PolicyPatch __post_init__. - # field_name is REQUIRED, with no name_order default: script_orders' - # values obey the same rule (via _validated_order), and a defaulted - # caller that forgot to pass it would silently name the wrong field. - if isinstance(value, str): - raise TypeError( - f"{field_name} must be an iterable of three Roles, " - f"not a bare string: {value!r}" - ) - # A {Role: position} dict iterates to the right three Roles in the - # right order, so it would be accepted -- harmlessly today, since - # the result is checked against the three exported orders anyway. - # Guarded regardless: "iterating this yields something plausible - # but not what you wrote" is one bug class, and leaving one field - # out of it is how the PolicyPatch hole happened. - if isinstance(value, Mapping): - raise TypeError( - f"{field_name} must be an iterable of three Roles, not a " - f"mapping: {value!r}" - ) - if isinstance(value, (bytes, bytearray, memoryview)): - raise TypeError( - f"{field_name} must be an iterable of three Roles, not " - f"{type(value).__name__} -- decode first, e.g. " - f"raw.decode('utf-8')" - ) - - def _reject_str_and_mapping(value: object, field_name: str) -> None: """The two shapes that iterate into something plausible but wrong. @@ -431,61 +390,6 @@ def _reject_str_and_mapping(value: object, field_name: str) -> None: ) -def _require_iterable(value: Iterable[Any], field_name: str, - expected: str = "an iterable") -> Iterable[Any]: - """Probe a value's iterability and return its iterator, raising a - TypeError naming the field if it has none. `expected` carries the - field's own phrasing ("a mapping of Script to order"); the default - suits every plain iterable field. - - Probing with iter() is what makes the message possible: a - non-iterable (an int, a bool, ...) is named here, matching the - treatment patronymic_rules already gets, instead of a bare "'int' - object is not iterable" surfacing from whatever tuple()/frozenset() - happens to run first. It is ALSO the reason callers consume the - returned iterator OUTSIDE any try of their own: an exception raised - inside a caller's generator while it is being consumed is the - caller's own error, and must propagate untouched rather than be - rewritten as a shape complaint about the field. - """ - try: - return iter(value) - except TypeError: - raise TypeError( - f"{field_name} must be {expected}, got {value!r}" - ) from None - - -def _validated_order(value: Iterable[Any], - field_name: str) -> tuple[Role, Role, Role]: - """name_order's element/permutation check, single-sourced so - script_orders values obey the identical rule (only the three - exported orders have implemented assignment semantics).""" - _reject_bare_string_order(value, field_name) - order = tuple(_require_iterable(value, field_name)) - # Sole rejection point for plain-string tuples: Role is a StrEnum, - # so the named-order membership check below compares EQUAL for - # ("given", "middle", "family") -- do not remove this loop as - # redundant. - for element in order: - if not isinstance(element, Role): - raise TypeError( - f"{field_name} elements must be Role members, " - f"got {element!r}" - ) - # Only the three exported orders have implemented assignment - # semantics; the unnamed permutations would silently misassign. - # Pre-2.0 strictness is free -- relaxing later is compatible. - if order not in (GIVEN_FIRST, FAMILY_FIRST, - FAMILY_FIRST_GIVEN_LAST): - raise ValueError( - f"{field_name} must be one of the exported orders, got " - f"{order!r}; use GIVEN_FIRST, FAMILY_FIRST, or " - f"FAMILY_FIRST_GIVEN_LAST" - ) - return order # type: ignore[return-value] # length checked above - - def _validated_script(key: object) -> Script: """Coerce one Script key, with the message every script-keyed field shares. Single-sourced deliberately: script_orders and the diff --git a/nameparser/_render.py b/nameparser/_render.py index 1e48b2651..34d435d8d 100644 --- a/nameparser/_render.py +++ b/nameparser/_render.py @@ -1,8 +1,9 @@ """Rendering for the 2.0 API: ParsedName -> display strings. -Layering: imports nameparser._types, and nameparser._lexicon for +Layering: imports nameparser._types, nameparser._lexicon for Lexicon.default() (capitalized() with lexicon=None), _normalize and -FULL_STOPS (enforced by tests/v2/test_layering.py). Parsing code +FULL_STOPS, and nameparser._policy for the scripts that write no +initials (enforced by tests/v2/test_layering.py). Parsing code never imports this module; ParsedName's rendering methods delegate here via call-time imports. @@ -18,7 +19,9 @@ from nameparser._lexicon import (FULL_STOPS, Lexicon, _normalize, _spells_an_initial) -from nameparser._types import (FOLDED_TAG, SHAPE_ACRONYM_TAG, +from nameparser._policy import _NO_INITIALS, _script_matcher +from nameparser._types import (_NAME_ORDERS, FOLDED_TAG, + SHAPE_ACRONYM_TAG, SPLIT_CREDENTIAL_TAG, SPLIT_MEMBER_TAG, UNCLASSIFIED_TAG, UNJOINED_CONJUNCTION_TAG, UNJOINED_TAG, Ambiguity, ParsedName, Role, @@ -147,14 +150,148 @@ def _format_spec(spec: str, values: dict[str, str], noun: str, return _collapse(rendered) -def render(name: ParsedName, spec: str) -> str: +def render(name: ParsedName, spec: str | None) -> str: """Fill the str.format spec from the seven role fields and the derived views (empty fields substitute ''), then apply the #254 - collapse. Unknown keys raise KeyError naming the valid fields.""" + collapse. Unknown keys raise KeyError naming the valid fields. + None renders the order-aware default (_default_render).""" + if spec is None: + if name.order is None: + # no order recorded (a 2.x pickle, a name built by hand): + # 2.x's default spec, so such a name renders as it did + # (decisions/R6, #754) + return _format_spec(_V2_DEFAULT_SPEC, { + key: getattr(name, key) for key in _RENDER_KEYS}, + "render", _RENDER_KEYS) + return _default_render(name, name.order) values = {key: getattr(name, key) for key in _RENDER_KEYS} return _format_spec(spec, values, "render", _RENDER_KEYS) +# rules/R6: "the name is laid out in the order it was read in" -- this +# is the layout half: each slot a role and the decoration standing +# around its words, the given-first row being 2.x's default spec, a +# family-first row keeping the title first and the suffix last. +# decisions/R6 (#754), decisions/vocabulary-model's #754 entry, item 6. +_Slot = tuple[Role, str, str] +_DECORATION: dict[Role, tuple[str, str]] = { + Role.NICKNAME: ('"', '"'), Role.MAIDEN: ("(", ")")} +#: The role whose words follow each name role in the layout, with the +#: decoration of its own (the nickname after the given name, the maiden +#: name after the family). +_BESIDE = {Role.GIVEN: Role.NICKNAME, Role.FAMILY: Role.MAIDEN} + + +def _layout(order: tuple[Role, Role, Role]) -> tuple[_Slot, ...]: + roles = [Role.TITLE] + for role in order: + roles.append(role) + if role in _BESIDE: + roles.append(_BESIDE[role]) + roles.append(Role.SUFFIX) + return tuple((r, *_DECORATION.get(r, ("", ""))) for r in roles) + + +_LAYOUTS = {order: _layout(order) for order in _NAME_ORDERS} +#: 2.x's default spec, what a name with no recorded order renders by. +_V2_DEFAULT_SPEC = ('{title} {given} "{nickname}" {middle} {family} ' + "({maiden}) {suffix}") + +#: rules/T2 and T3's dividers: a nakaguro, or an interpunct the parse +#: divided at (one written with a space beside it is a name word, +#: rules/T3, so it is a token and never stands in a gap). +_DOT_SEPARATORS = frozenset({"\u00B7", "\u30FB", "\uFF65"}) +_NAME_WORD_ROLES = frozenset({Role.GIVEN, Role.MIDDLE, Role.FAMILY}) +#: A comma the parse reads, and how it is written back: no space +#: before it and one after, a full-width comma carrying its own width. +_COMMA_WRITTEN = {",": ", ", "\u060C": "\u060C ", "\uFF0C": "\uFF0C"} + + +def _written_separator(gap: str) -> str | None: + """The text written between two adjacent words, normalized, or + None where it is no separator R6 keeps (a delimiter, a marker word, + two commas, a hyphen, a zero-width or directional mark), so the + layout's own joiner stands.""" + # rules/R6: "The separator is normalized by its kind." + if not gap: + return "" + core = gap.strip() + if not core: + return " " + if core in _DOT_SEPARATORS: + return core + return _COMMA_WRITTEN.get(core) + + +def _ordered(tokens: list[Token]) -> list[Token]: + # a field's words in the order its view joins them: folded words + # first (mechanisms.md#FOLDED_TAG: "a rule that needs different + # rendering order tags the token, and the rendering views consult + # the tag") + return ([t for t in tokens if FOLDED_TAG in t.tags] + + [t for t in tokens if FOLDED_TAG not in t.tags]) + + +def _default_render(name: ParsedName, + order: tuple[Role, Role, Role]) -> str: + """str()'s rendering: the layout `name.order` picks, two words side + by side both as written and as laid out keeping their written + separator (_written_separator), every other pair the layout's + joiner -- a space, the decoration between two fields, or the + suffix view's ', ' between credentials written apart.""" + by_role: dict[Role, list[Token]] = {} + for tok in name.tokens: + if tok.text: + by_role.setdefault(tok.role, []).append(tok) + # where each word stands as written: consecutive positions in + # `tokens` with spans in ascending order are side by side there + position = {id(t): i for i, t in enumerate(name.tokens)} + out: list[str] = [] + prev: Token | None = None + prev_close = "" + for role, open_, close in _LAYOUTS[order]: + words = by_role.get(role) + if not words: + continue + for k, tok in enumerate(_ordered(words)): + if prev is not None: + if k == 0 and (prev_close or open_): + out.append(f"{prev_close} {open_}") + else: + joined = _side_by_side(name, prev, tok, position) + if joined is None: + joined = (", " if role is Role.SUFFIX and k + and "joined" not in tok.tags else " ") + out.append(joined) + elif open_: + out.append(open_) + out.append(tok.text) + prev = tok + prev_close = close + if prev is not None: + out.append(prev_close) + # a comma that is a word of its own (a delimited nickname's) keeps + # no space before it, as 2.x's collapse wrote it + return _SPACE_BEFORE_COMMA.sub(",", "".join(out)) + + +def _side_by_side(name: ParsedName, a: Token, b: Token, + position: dict[int, int]) -> str | None: + """The written separator between `a` and `b` where `b` is the word + written directly after `a`, else None.""" + if (a.span is None or b.span is None + or position[id(b)] != position[id(a)] + 1): + return None + written = _written_separator(name.original[a.span.end:b.span.start]) + # rules/R6: "A family comma between name words is never kept" -- + # side by side in the layout where its given part went to the + # family (P1's fold); a comma before a suffix stays (decisions/R6) + if (written and written[0] in _COMMA_WRITTEN + and a.role in _NAME_WORD_ROLES and b.role in _NAME_WORD_ROLES): + return None + return written + + # rules/R3: "initials take the first letter of each given, middle, # and base family word; titles, suffixes, particles and nicknames # contribute nothing" @@ -191,6 +328,13 @@ def _first_letter(text: str) -> str: return unicodedata.normalize("NFD", first) +#: rules/R7: "a word whose first letter is in a script that writes no +#: initials contributes nothing to the initials" (decisions/R7, #754), +#: asked of the composed letter, a decomposed hangul syllable being +#: conjoining jamo, which no _NO_INITIALS range holds (#665). +_initialless = _script_matcher(*_NO_INITIALS, whole=True) + + def initials(name: ParsedName, spec: str, delimiter: str, separator: str) -> str: """First letter of each contributing token per group, v1 semantics: delimiter follows each initial, separator sits between initials @@ -240,8 +384,11 @@ def initials(name: ParsedName, spec: str, delimiter: str, separator: str) -> str # otherwise reopen #408 there. tokens = (tuple(t for t in tokens if FOLDED_TAG in t.tags) + tuple(t for t in tokens if FOLDED_TAG not in t.tags)) + letters = (_first_letter(t.text) for t in tokens) values[key] = separator.join( - _first_letter(t.text) + delimiter for t in tokens) + letter + delimiter for letter in letters + if letter.isascii() or not _initialless( + unicodedata.normalize("NFC", letter))) return _format_spec(spec, values, "initials", _INITIALS_KEYS) @@ -814,4 +961,4 @@ def capitalized(name: ParsedName, lexicon: Lexicon | None, *, tuple(replacement[t] for t in a.tokens), a.alternative) for a in name.ambiguities) return ParsedName(original=name.original, tokens=new_tokens, - ambiguities=new_ambiguities) + ambiguities=new_ambiguities, order=name.order) diff --git a/nameparser/_types.py b/nameparser/_types.py index be537d0a9..d298af538 100644 --- a/nameparser/_types.py +++ b/nameparser/_types.py @@ -14,10 +14,10 @@ from __future__ import annotations import dataclasses -from collections.abc import Callable, Mapping +from collections.abc import Callable, Iterable, Mapping from dataclasses import dataclass, field from enum import Enum, StrEnum -from typing import TYPE_CHECKING, NamedTuple, NoReturn, TypeVar +from typing import TYPE_CHECKING, Any, NamedTuple, NoReturn, TypeVar if TYPE_CHECKING: from nameparser._lexicon import Lexicon @@ -54,6 +54,123 @@ class Role(StrEnum): MAIDEN = "maiden" +# Order-spec constants (#270). Each reads as its contents because roles +# are named given/family, not first/last. Defined here rather than in +# _policy because ParsedName.order holds one; _policy re-exports them. + +#: Western order (the default): the first word of positional input is +#: the given name, the last is the family name, everything between is +#: middle. One of the three valid ``Policy(name_order=...)`` values. +GIVEN_FIRST = (Role.GIVEN, Role.MIDDLE, Role.FAMILY) +#: Family name first, given name second, remaining words middle +#: (e.g. Hungarian, or East Asian order). One of the three valid +#: ``Policy(name_order=...)`` values. +FAMILY_FIRST = (Role.FAMILY, Role.GIVEN, Role.MIDDLE) +#: Family name first, given name LAST, words between middle +#: (e.g. Vietnamese full-name order). One of the three valid +#: ``Policy(name_order=...)`` values. +FAMILY_FIRST_GIVEN_LAST = (Role.FAMILY, Role.MIDDLE, Role.GIVEN) + +#: The three orders, for ParsedName.order's validation. +_NAME_ORDERS = (GIVEN_FIRST, FAMILY_FIRST, FAMILY_FIRST_GIVEN_LAST) + + +# The order validation Policy.name_order, its script_orders values and +# ParsedName.order share, here beside the constants since _types +# imports nothing internal; _policy imports it from here. + +def _reject_bare_string_order(value: object, field_name: str) -> None: + # tuple("gmf") would be ("g", "m", "f") -- catch the bare string + # with the same TypeError every other iterable field raises. + # Single-sourced: called from Policy AND PolicyPatch __post_init__. + # field_name is REQUIRED, with no name_order default: script_orders' + # values obey the same rule (via _validated_order), and a defaulted + # caller that forgot to pass it would silently name the wrong field. + if isinstance(value, str): + raise TypeError( + f"{field_name} must be an iterable of three Roles, " + f"not a bare string: {value!r}" + ) + # A {Role: position} dict iterates to the right three Roles in the + # right order, so it would be accepted -- harmlessly today, since + # the result is checked against the three exported orders anyway. + # Guarded regardless: "iterating this yields something plausible + # but not what you wrote" is one bug class, and leaving one field + # out of it is how the PolicyPatch hole happened. + if isinstance(value, Mapping): + raise TypeError( + f"{field_name} must be an iterable of three Roles, not a " + f"mapping: {value!r}" + ) + # a set iterates in an order its hash seed decides, so the same + # value read as one order, another, or none from run to run + if isinstance(value, (set, frozenset)): + raise TypeError( + f"{field_name} must be an ordered iterable of three Roles, " + f"not a {type(value).__name__}: {value!r}" + ) + if isinstance(value, (bytes, bytearray, memoryview)): + raise TypeError( + f"{field_name} must be an iterable of three Roles, not " + f"{type(value).__name__} -- decode first, e.g. " + f"raw.decode('utf-8')" + ) + + +def _require_iterable(value: Iterable[Any], field_name: str, + expected: str = "an iterable") -> Iterable[Any]: + """Probe a value's iterability and return its iterator, raising a + TypeError naming the field if it has none. `expected` carries the + field's own phrasing ("a mapping of Script to order"); the default + suits every plain iterable field. + + Probing with iter() is what makes the message possible: a + non-iterable (an int, a bool, ...) is named here, matching the + treatment patronymic_rules already gets, instead of a bare "'int' + object is not iterable" surfacing from whatever tuple()/frozenset() + happens to run first. It is ALSO the reason callers consume the + returned iterator OUTSIDE any try of their own: an exception raised + inside a caller's generator while it is being consumed is the + caller's own error, and must propagate untouched rather than be + rewritten as a shape complaint about the field. + """ + try: + return iter(value) + except TypeError: + raise TypeError( + f"{field_name} must be {expected}, got {value!r}" + ) from None + + +def _validated_order(value: Iterable[Any], + field_name: str) -> tuple[Role, Role, Role]: + """name_order's element/permutation check, single-sourced so + script_orders values obey the identical rule (only the three + exported orders have implemented assignment semantics).""" + _reject_bare_string_order(value, field_name) + order = tuple(_require_iterable(value, field_name)) + # Sole rejection point for plain-string tuples: Role is a StrEnum, + # so the named-order membership check below compares EQUAL for + # ("given", "middle", "family") -- do not remove this loop as + # redundant. + for element in order: + if not isinstance(element, Role): + raise TypeError( + f"{field_name} elements must be Role members, " + f"got {element!r}" + ) + # Only the three exported orders have implemented assignment + # semantics; the unnamed permutations would silently misassign. + # Pre-2.0 strictness is free -- relaxing later is compatible. + if order not in _NAME_ORDERS: + raise ValueError( + f"{field_name} must be one of the exported orders, got " + f"{order!r}; use GIVEN_FIRST, FAMILY_FIRST, or " + f"FAMILY_FIRST_GIVEN_LAST" + ) + return order # type: ignore[return-value] # length checked above + + class Span(NamedTuple): """Where a :class:`Token` came from: a character range into :attr:`ParsedName.original` such that ``original[start:end]`` is @@ -1020,6 +1137,17 @@ class ParsedName: #: Judgment calls that could have gone the other way; empty for #: most names (see Ambiguity). ambiguities: tuple[Ambiguity, ...] = () + #: The order the name was read in: ``GIVEN_FIRST``, + #: ``FAMILY_FIRST`` or ``FAMILY_FIRST_GIVEN_LAST``, the declared + #: ``name_order`` or the ``script_orders`` entry that overrode it, + #: and ``GIVEN_FIRST`` for a name with a family comma. ``str()`` + #: and :meth:`render`'s default lay the name out in it. ``None`` + #: (a name built by hand, or a 2.x pickle) renders as 2.x did: + #: given-first, its words joined by spaces. + #: Left out of ``==`` and :meth:`comparison_key`, so two equal + #: names can render differently. + order: tuple[Role, Role, Role] | None = field( + default=None, compare=False, metadata={ADDED_IN: "3.0.0"}) # in the class body so @dataclass(slots=True) keeps them __getstate__ = _guarded_getstate @@ -1032,6 +1160,12 @@ def __post_init__(self) -> None: ) object.__setattr__(self, "tokens", tuple(self.tokens)) object.__setattr__(self, "ambiguities", tuple(self.ambiguities)) + if self.order is not None: + # the one validator Policy.name_order goes through, so a + # list is stored as the tuple and a plain-string tuple is + # refused here as there + object.__setattr__(self, "order", _validated_order( + self.order, "ParsedName.order")) for tok in self.tokens: if not isinstance(tok, Token): raise TypeError( @@ -1267,7 +1401,8 @@ def _with_field_tokens( amb for amb in self.ambiguities if all(t in new_tokens for t in amb.tokens) ) - return ParsedName(self.original, _remarked(new_tokens), kept) + return ParsedName(self.original, _remarked(new_tokens), kept, + self.order) # -- comparison ------------------------------------------------------- @@ -1301,18 +1436,28 @@ def matches(self, other: str | ParsedName, *, # tests/v2/test_layering.py), so these import at call time -- module # level stays internal-import-free. - def render( - self, - spec: str = ('{title} {given} "{nickname}" {middle} {family} ' - "({maiden}) {suffix}"), - ) -> str: + def render(self, spec: str | None = None) -> str: """Fill the str.format spec from the seven role fields and the derived views; empty fields collapse (#254), including the - default spec's decorations (empty '""' and '()' wrappers). - The default shows every non-empty field: the nickname quoted - after the given name, the maiden name parenthesized after the - family name. Unknown keys raise KeyError naming the valid - fields.""" + spec's decorations (empty '""' and '()' wrappers). A spec + renders exactly as written, its order and its joiners. Unknown + keys raise KeyError naming the valid fields. + + ``None``, the default and what ``str()`` passes, lays the name + out in :attr:`order`: given-first + ``'{title} {given} "{nickname}" {middle} {family} ({maiden}) + {suffix}'``, and for a family-first order the family (with its + maiden name) after the title and the given and middle names + in the order's sequence, the suffix last. Two words that stand + one directly after the other both in the name as written and + in that layout keep the separator written between them, + normalized: nothing stays nothing, any whitespace becomes one + space, an interpunct or nakaguro the parse divided at stands + alone, and one comma is written ', ' (ASCII), '، ' (Arabic) + or ',' (full-width). Every other pair takes a space, or the + layout's quotes and parentheses where those stand between the + two fields, and suffixes not written side by side are joined + with ', ' as the ``suffix`` field joins them.""" import nameparser._render as _render return _render.render(self, spec) diff --git a/tests/v2/data/parsedname_v28_korean.pickle b/tests/v2/data/parsedname_v28_korean.pickle new file mode 100644 index 000000000..b09b9a72f Binary files /dev/null and b/tests/v2/data/parsedname_v28_korean.pickle differ diff --git a/tests/v2/data/parsednames_v28_separators.pickle b/tests/v2/data/parsednames_v28_separators.pickle new file mode 100644 index 000000000..dba6dc418 Binary files /dev/null and b/tests/v2/data/parsednames_v28_separators.pickle differ diff --git a/tests/v2/pipeline/test_comma.py b/tests/v2/pipeline/test_comma.py index 2f185872f..fcab289ec 100644 --- a/tests/v2/pipeline/test_comma.py +++ b/tests/v2/pipeline/test_comma.py @@ -364,11 +364,11 @@ def test_a_bound_caps_word_keeps_its_capitals_in_case_repair() -> None: # (#613's PR review). A name in one case carries no contrast. def repaired(text: str) -> str: return str(parse(text).capitalized(force=True)) - assert repaired("John Smith, XYZ") == "John Smith XYZ" + assert repaired("John Smith, XYZ") == "John Smith, XYZ" assert repaired("John Smith, PhD Jones XYZ") == \ - "John Smith PhD Jones XYZ" + "John Smith, PhD Jones XYZ" assert repaired("JOHN SMITH, PhD JONES XYZ") == \ - "John Smith PhD Jones Xyz" + "John Smith, PhD Jones Xyz" def test_a_lone_core_after_the_comma_is_a_word_of_the_part() -> None: diff --git a/tests/v2/rules_budget.json b/tests/v2/rules_budget.json index 33c96fee4..88fa7dbf7 100644 --- a/tests/v2/rules_budget.json +++ b/tests/v2/rules_budget.json @@ -51,9 +51,11 @@ "P9": {"words": 405, "then_words": 265, "because_sentences": 1, "except": 2, "precedence": 0, "accepted": 0, "accepted_words": 0}, "R1": {"words": 176, "then_words": 145, "because_sentences": 1, "except": 0, "precedence": 0, "accepted": 1, "accepted_words": 146}, "R2": {"words": 264, "then_words": 18, "because_sentences": 1, "except": 2, "precedence": 0, "accepted": 2, "accepted_words": 85}, - "R3": {"words": 527, "then_words": 407, "because_sentences": 2, "except": 1, "precedence": 0, "accepted": 2, "accepted_words": 221}, + "R3": {"words": 534, "then_words": 414, "because_sentences": 2, "except": 1, "precedence": 0, "accepted": 2, "accepted_words": 221}, "R4": {"words": 1016, "then_words": 729, "because_sentences": 1, "except": 4, "precedence": 0, "accepted": 4, "accepted_words": 520}, "R5": {"words": 250, "then_words": 154, "because_sentences": 2, "except": 0, "precedence": 0, "accepted": 0, "accepted_words": 0}, + "R6": {"words": 400, "then_words": 265, "because_sentences": 2, "except": 1, "precedence": 0, "accepted": 5, "accepted_words": 289}, + "R7": {"words": 142, "then_words": 30, "because_sentences": 2, "except": 0, "precedence": 1, "accepted": 2, "accepted_words": 74}, "S1": {"words": 306, "then_words": 26, "because_sentences": 1, "except": 2, "precedence": 3, "accepted": 0, "accepted_words": 0}, "S2": {"words": 657, "then_words": 119, "because_sentences": 1, "except": 0, "precedence": 7, "accepted": 3, "accepted_words": 222}, "S3": {"words": 960, "then_words": 398, "because_sentences": 3, "except": 4, "precedence": 5, "accepted": 6, "accepted_words": 343}, diff --git a/tests/v2/rules_doc.py b/tests/v2/rules_doc.py index e9479e3d9..b3fa423da 100644 --- a/tests/v2/rules_doc.py +++ b/tests/v2/rules_doc.py @@ -64,7 +64,7 @@ ASSERTABLE_FIELDS = frozenset({ "title", "given", "middle", "family", "suffix", "nickname", "maiden", "family_base", "family_particles", "surnames", "given_names", - "initials", "capitalized", "capitalized_forced", + "initials", "capitalized", "capitalized_forced", "str", "ambiguities", "pieces", "warns", "raises"}) diff --git a/tests/v2/test_layering.py b/tests/v2/test_layering.py index 60a563241..14b7657f3 100644 --- a/tests/v2/test_layering.py +++ b/tests/v2/test_layering.py @@ -71,8 +71,10 @@ "_locale.py": ("nameparser._types", "nameparser._lexicon", "nameparser._policy"), # _lexicon is needed at runtime: capitalized(lexicon=None) resolves - # to Lexicon.default() - "_render.py": ("nameparser._types", "nameparser._lexicon"), + # to Lexicon.default(); _policy for the scripts that write no + # initials (_NO_INITIALS), which initials() skips (#754) + "_render.py": ("nameparser._types", "nameparser._lexicon", + "nameparser._policy"), # every stage module: state + the three config/type modules "_pipeline/_state.py": ("nameparser._types", "nameparser._lexicon", "nameparser._policy"), diff --git a/tests/v2/test_render.py b/tests/v2/test_render.py index a0bed8ccb..490183c8e 100644 --- a/tests/v2/test_render.py +++ b/tests/v2/test_render.py @@ -97,6 +97,109 @@ def test_default_str_includes_nickname_and_maiden() -> None: "Dr. Juan Q. Xavier de la Vega III") +# rules/R6, the order-aware default: one row per layout and per +# separator kind, the comma shapes, and the pairs that take the joiner +@pytest.mark.parametrize(("text", "order", "want"), [ + # the three layouts; a family comma lays out given-first under any + ("김민준", None, "김민준"), + ("Wang Xiaoming", FAMILY_FIRST, "Wang Xiaoming"), + ("Nguyen Van Anh", FAMILY_FIRST_GIVEN_LAST, "Nguyen Van Anh"), + ("Dr. Wang Xiaoming Jr.", FAMILY_FIRST, "Dr. Wang Xiaoming Jr."), + ("Smith, John", FAMILY_FIRST, "John Smith"), + ("Smith, John", FAMILY_FIRST_GIVEN_LAST, "John Smith"), + ("Wang, Xiaoming", FAMILY_FIRST, "Xiaoming Wang"), + # the family-first layout's decorations stand beside their fields + ("山田「タロ」太郎", None, '山田 太郎 "タロ"'), + ("山田 花子 旧姓 佐藤", None, "山田 (佐藤) 花子"), + # separator kinds: nothing, whitespace (U+3000, a tab, a run), + # interpunct, nakaguro (spaced and halfwidth), each comma + ("王小明先生", None, "王小明先生"), + ("山田\u3000太郎", None, "山田 太郎"), + ("John\t \tSmith", None, "John Smith"), + ("威廉·莎士比亚", None, "威廉·莎士比亚"), + ("ジョン ・ スミス", None, "ジョン・スミス"), + ("ジョン・スミス", None, "ジョン・スミス"), + ("John Smith ,Jr.", None, "John Smith, Jr."), + ("John Smith,Jr.", None, "John Smith, Jr."), + ("John Smith, Jr.", None, "John Smith,Jr."), + ("محمد علي، الابن", None, "محمد علي، الابن"), + # comma shapes: no comma, a full name, one word and nothing before + # it, and a third part + ("John Smith Jr.", None, "John Smith Jr."), + ("John Smith, Jr.", None, "John Smith, Jr."), + ("Smith, Jr.", None, "Smith, Jr."), + (", Jr.", None, "Jr."), + ("Smith, John, Jr.", None, "John Smith Jr."), + ("Wang Xiaoming, Jr.", FAMILY_FIRST, "Wang Xiaoming, Jr."), + ("Wang Xiaoming, Jr.", FAMILY_FIRST_GIVEN_LAST, "Wang Xiaoming, Jr."), + ("John Smith, MD, PhD", None, "John Smith, MD, PhD"), + ("John Smith MD PhD", None, "John Smith MD PhD"), + # a family comma is never kept, also where its given part went to + # the family and the two words stay side by side; a comma between + # titles moved up from past a second comma is kept (rules/R6's + # Accepted bullet: it reads back as a family comma) + ("Smith, de Mesnil Jean", None, "Smith de Mesnil Jean"), + # a comma with only a suffix after it stays (decisions/R6's + # 2026-10-29 A SUFFIX COMMA entry) + ("Smith, MD", None, "Smith, MD"), + ("Smith, Jr., John", None, "Smith, Jr., John"), + ("John, Jr.", None, "John, Jr."), + ("John Smith, Jr., Dr., Prof.", None, "Dr., Prof. John Smith, Jr."), + ("John Smith Dr., Prof.", None, "Dr., Prof. John Smith"), + # the joiner: a hyphen word stays one word, two commas, a zero-width + # space, a delimiter, a dropped marker word + ("John Smith,, Jr.", None, "John Smith Jr."), + ("John\u200bSmith", None, "John Smith"), + ("John (Jack) Smith", None, 'John "Jack" Smith'), + ("Jane Smith née Jones, PhD", None, "Jane Smith (Jones) PhD"), + ("Jane (née , Jones) Smith", None, 'Jane "née, Jones" Smith'), +]) +def test_the_default_render_follows_the_written_name( + text: str, order: tuple[Role, Role, Role] | None, want: str) -> None: + parser = Parser(policy=Policy(name_order=order)) if order else Parser() + name = parser.parse(text) + assert str(name) == want, text + assert name.render() == name.render(None) == want + + +def test_a_family_first_maiden_reads_back_as_the_given_first_one_does( + ) -> None: + """A parenthesized maiden name reads back as a nickname wherever the + layout puts it (decisions/render-default's accepted cost), under a + family-first layout as under the given-first one; the name words + read back in place, where 2.x's given-first rendering of this name + read them back swapped ('花子 山田 (佐藤)').""" + for text, order in (("Jane Smith née Jones", None), + ("山田 花子 旧姓 佐藤", None), + ("Wang Xiaoming née Li", FAMILY_FIRST)): + parser = Parser(policy=Policy(name_order=order)) if order else Parser() + name = parser.parse(text) + back = parser.parse(str(name)) + assert (back.given, back.family) == (name.given, name.family), text + assert (back.maiden, back.nickname) == ("", name.maiden), text + + +def test_a_spec_renders_as_written_whatever_the_order() -> None: + # rules/R6's Because: a caller's spec keeps 2.x's meaning + name = parse("김민준") + assert name.render("{given} {family}") == "민준 김" + assert name.render('{title} {given} "{nickname}" {middle} {family} ' + "({maiden}) {suffix}") == "민준 김" + assert parse("John Smith, Jr.").render("{given} {family} {suffix}") == ( + "John Smith Jr.") + + +def test_a_word_the_parse_did_not_place_takes_the_joiner() -> None: + # synthetic tokens (span None) are side by side with nothing as + # written; a replaced field renders space-joined in the layout + name = parse("김민준").replace(given="서연") + assert str(name) == "김 서연" + pn = _pn("ab", [Token("a", Span(0, 1), Role.FAMILY), + Token("b", Span(1, 2), Role.GIVEN)]) + assert str(pn) == "b a" # no order recorded: given-first + assert str(dataclasses.replace(pn, order=FAMILY_FIRST)) == "ab" + + def test_parsedname_render_and_str_delegate() -> None: pn = _delavega() assert pn.render() == "Dr. Juan de la Vega III" @@ -110,13 +213,17 @@ def test_a_suffix_run_survives_a_render_and_a_reparse() -> None: The instability #429 recorded and left open: its fix made 'Smith, MD PhD' render suffix 'MD PhD', and str() of that parse - is 'Smith MD PhD' -- a NO-COMMA string, which the no-comma path + was 'Smith MD PhD' -- a NO-COMMA string, which the no-comma path then read back as 'MD, PhD'. One writing round-tripped, the other did not, and which was which depended on a comma the render had already dropped. Three spellings of one run, each its own path into the entry rule: a lone family plus the run, the full name - plus a comma, and the full name with no comma at all. + plus a comma, and the full name with no comma at all. Since 3.0 + the render keeps a comma before a suffix (rules/R6), so the first + two render with theirs; the third still reads back comma-less. """ + assert [str(parse(t)) for t in ("Smith, MD PhD", "John Smith MD PhD")] \ + == ["Smith, MD PhD", "John Smith MD PhD"] for text in ("Smith, MD PhD", "John Smith, MD PhD", "John Smith MD PhD"): once = parse(text) @@ -585,7 +692,7 @@ def test_the_gate_leaves_the_suffixes_out() -> None: # token: the gate excludes every SUFFIX-roled # token, not only the last one ("juan garcia PhD MD", "Juan Garcia PhD MD"), - ("juan garcia, PhD, MD", "Juan Garcia PhD, MD"), + ("juan garcia, PhD, MD", "Juan Garcia, PhD, MD"), # an untagged suffix: 'VI' reads suffix by # shape (roman numeral) and carries no # vocab:* tag, so a tag-driven gate would @@ -594,7 +701,7 @@ def test_the_gate_leaves_the_suffixes_out() -> None: # the gate over each comma shape: SUFFIX_COMMA, # FAMILY_COMMA, and a FAMILY_COMMA plus a # trailing suffix segment - ("juan garcia, III", "Juan Garcia III"), + ("juan garcia, III", "Juan Garcia, III"), ("garcia, juan III", "Juan Garcia III"), ("GARCIA, JUAN, Jr.", "Juan Garcia Jr.")): assert str(parse(text).capitalized()) == repaired, text @@ -615,8 +722,8 @@ def test_the_gate_leaves_the_suffixes_out() -> None: # no case at all (trivially one-case), so the name is admitted -- # and then the suffix, written in more than one case, is kept as # written (2026-09-24), while one written in one case repairs - assert str(parse("김민준 Phd").capitalized()) == "민준 김 Phd" - assert str(parse("김민준 PHD").capitalized()) == "민준 김 PhD" + assert str(parse("김민준 Phd").capitalized()) == "김민준 Phd" + assert str(parse("김민준 PHD").capitalized()) == "김민준 PhD" # no non-suffix token at all -- a synthetic name only, since every # parse names somebody (rules/H4): the empty text is one-case only_suffixes = _pn("phd md", [ @@ -640,12 +747,12 @@ def test_a_suffix_written_in_more_than_one_case_is_kept_as_written( here as a boundary.""" for text, plain, forced in ( ("john smith EdD", "John Smith EdD", "John Smith EDD"), - ("JANE DOE, DSc", "Jane Doe DSc", "Jane Doe DSc"), + ("JANE DOE, DSc", "Jane Doe, DSc", "Jane Doe, DSc"), ("juan garcia PsyD", "Juan Garcia PsyD", "Juan Garcia PsyD"), ("john smith B.Tech.", "John Smith B.Tech.", "John Smith B.TECH."), - ("john smith, EdD, PhD", "John Smith EdD, PhD", - "John Smith EDD, PhD"), + ("john smith, EdD, PhD", "John Smith, EdD, PhD", + "John Smith, EDD, PhD"), # boundary: the garbled spelling is kept too ("juan garcia Iii", "Juan Garcia Iii", "Juan Garcia III"), ("john smith Mba", "John Smith Mba", "John Smith MBA"), @@ -678,7 +785,7 @@ def test_the_gate_and_the_parser_read_a_cased_suffix_differently() -> None: for name, repaired in ((mixed, "John e Jones III"), (one_case, "John E Jones III"), (parse("jack MA"), "Jack MA"), - (parse("MD, PhD"), "Md PhD")): + (parse("MD, PhD"), "Md, PhD")): assert str(name.capitalized()) == repaired, name.original @@ -761,7 +868,7 @@ def test_a_mask_recases_the_word_as_the_writer_punctuated_it() -> None: assert "bsc" in Lexicon.default().suffix_acronyms # forced: a mixed-case corpus name R5 would otherwise hold back assert str(parse("Dr. med. univ. Margit Popp, MSc").capitalized( - force=True)) == "Dr. Med. Univ. Margit Popp MSc" + force=True)) == "Dr. Med. Univ. Margit Popp, MSc" # the mask is also asked BEFORE the numeral clause, which would # give 'III' -- an identity mask ('iii' stays lowercase) proves # the mask decided rather than merely agreeing with it @@ -827,8 +934,8 @@ def test_a_joined_acronym_is_capitals_only_as_a_listed_suffix() -> None: too, and a mixed-case spelling is left alone unless forced.""" for text, whole in (("otr/l smith", "Otr/L Smith"), ("john otr/l smith", "John Otr/L Smith"), - ("john smith, md, xyz-q", "John Smith MD, Xyz-Q"), - ("john smith, md, xyz/q", "John Smith MD, Xyz/Q")): + ("john smith, md, xyz-q", "John Smith, MD, Xyz-Q"), + ("john smith, md, xyz/q", "John Smith, MD, Xyz/Q")): assert str(parse(text).capitalized()) == whole, text for text, suffix in ((", otr/l", "OTR/L"), ("smith, otr/l", "OTR/L"), @@ -1104,9 +1211,10 @@ def test_a_spliced_decomposed_initial_reads_as_its_composed_twin() -> None: @pytest.mark.parametrize(("text", "want"), [ - # decomposed hangul: jamo are letters, not marks, and the initial - # is the whole syllable they spell, as composed - ("김 민준", "민. 김."), + # decomposed hangul: jamo are letters, not marks, so the initial + # would be the whole syllable they spell, as composed -- and hangul + # writes no initials, so it gives none (rules/R3, #754) + ("김 민준", ""), # a composed Bengali vowel sign is a mark that composes with # nothing: it stays out of the initial in both forms (#585 does not # decide the Indic syllable question) @@ -1760,9 +1868,9 @@ def test_a_caps_credential_after_a_comma_keeps_its_capitals_in_every_setting( # EVERYWHERE. Forced, since R5 leaves a mixed-case name alone. for setting in (CapsSuffixes.AFTER_COMMA, CapsSuffixes.EVERYWHERE): parser = Parser(policy=Policy(unlisted_caps_suffixes=setting)) - for text, rendered in (("John Smith, XYZ", "John Smith XYZ"), - ("John Smith, LEED AP", "John Smith LEED AP"), - ("John Smith, PhD XYZ", "John Smith PhD XYZ")): + for text, rendered in (("John Smith, XYZ", "John Smith, XYZ"), + ("John Smith, LEED AP", "John Smith, LEED AP"), + ("John Smith, PhD XYZ", "John Smith, PhD XYZ")): name = parser.parse(text) assert str(name.capitalized(force=True)) == rendered, (setting, text) diff --git a/tests/v2/test_rules_doc.py b/tests/v2/test_rules_doc.py index 6e3e53d63..d8031e450 100644 --- a/tests/v2/test_rules_doc.py +++ b/tests/v2/test_rules_doc.py @@ -226,6 +226,8 @@ def _run(example: Example) -> object: return tuple(a.kind.value for a in parsed.ambiguities) if example.field == "initials": return parsed.initials() + if example.field == "str": + return str(parsed) if example.field == "capitalized": return str(parsed.capitalized()) # R5: the gate returns mixed-case input untouched, so an example diff --git a/tests/v2/test_snapshot.py b/tests/v2/test_snapshot.py index 5eb16c9f8..92c1e49e6 100644 --- a/tests/v2/test_snapshot.py +++ b/tests/v2/test_snapshot.py @@ -55,10 +55,14 @@ def test_a_case_view_is_recorded_only_where_it_moves_something() -> None: # ...but the view is the whole repaired name, so in a name it does # repair, a role move that changes the rendering moves the view # with no word changing case: the echo the initials column has. + # Since 3.0 the rendering follows the order a name was read in + # (rules/R6), so reading `JOHN SMITH` family-first no longer moves + # it; a word the layout moves still does -- here the trailing + # particle P6 attaches before the family it joins under FAMILY_FIRST. caps, caps_reordered = snapshot.read( - [("JOHN SMITH", None), ("JOHN SMITH", "FAMILY_FIRST")]) + [("JOHN SMITH VAN", None), ("JOHN SMITH VAN", "FAMILY_FIRST")]) assert (caps["capitalized"], caps_reordered["capitalized"]) \ - == ("John Smith", "Smith John") + == ("John Smith Van", "van John Smith") def test_a_snapshot_predating_the_case_views_is_not_compared_on_them() -> None: diff --git a/tests/v2/test_types.py b/tests/v2/test_types.py index 8baca715f..d60f488e1 100644 --- a/tests/v2/test_types.py +++ b/tests/v2/test_types.py @@ -5,7 +5,7 @@ import pytest -from nameparser import parse +from nameparser import FAMILY_FIRST, GIVEN_FIRST, Policy, parse from nameparser._types import ( STABLE_TAGS, Ambiguity, AmbiguityKind, ParsedName, Role, Segmentation, Span, Token, @@ -593,6 +593,18 @@ def _renamed(state: dict[str, object], old: str, "alternative", "alt"), "unexpected fields: alt", id="renamed-added-field"), + # ParsedName.order (3.0, #754) is admitted missing, as `alternative` + # is, and refused renamed or beside a shipped field missing + pytest.param(ParsedName, lambda: _renamed(dict( + _pn("Juan", [Token("Juan", Span(0, 4), Role.GIVEN)]).__getstate__()), + "order", "ordr"), + "unexpected fields: ordr", + id="renamed-added-field-on-parsedname"), + pytest.param(ParsedName, lambda: _without(dict( + _pn("Juan", [Token("Juan", Span(0, 4), Role.GIVEN)]).__getstate__()), + "order", "ambiguities"), + "missing fields: ambiguities;", + id="missing-shipped-field-beside-a-missing-order"), # Token.reading (3.0) beside the shipped fields it must not excuse pytest.param(Token, lambda: _without(_token_state(), "reading", "tags"), "missing fields: tags;", @@ -685,6 +697,97 @@ def test_a_parsedname_pickled_by_2_6_0_loads() -> None: now.ambiguities[0].alternative) +def test_a_parsedname_pickled_by_2_8_0_loads_and_renders_given_first( + ) -> None: + """tests/v2/data/parsedname_v28_korean.pickle is `parse("김민준")` pickled + (protocol 4) by the released 2.8.0 wheel, written before + `ParsedName.order` existed. Made 2026-10-29 with `PYTHONSAFEPATH=1 + uv run --isolated --no-project --with 'nameparser==2.8.0'` from a + directory outside the checkout, the version and the module path + asserted. It loads with no order and renders given-first, as 2.x + did, while a fresh parse renders as written and the two compare + equal (rules/R6's Accepted bullet, decisions/R6). pickle.load is + safe here: a repo-controlled fixture.""" + import pickle + with open(Path(__file__).parent / "data" + / "parsedname_v28_korean.pickle", + "rb") as f: + loaded = pickle.load(f) + now = parse("김민준") + assert loaded.order is None + assert now.order == FAMILY_FIRST + assert loaded == now + assert (str(loaded), str(now)) == ("민준 김", "김민준") + assert pickle.loads(pickle.dumps(now)).order == FAMILY_FIRST + + +def test_a_2_8_0_pickle_renders_as_2_8_0_did_separators_included( + ) -> None: + """tests/v2/data/parsednames_v28_separators.pickle holds + `parse()` of `John Smith, Jr.`, `威廉·莎士比亚` and `山田 太郎` + pickled (protocol 4) by the released 2.8.0 wheel, whose str() gave + the three renderings asserted below; made 2026-10-29 as the v28 + fixture above was. The decision promises a 2.x pickle renders as + today (decisions/vocabulary-model's #754 output-model entry, item + 6), so a name with no order keeps 2.x's spacing too, not only its + given-first layout. pickle.load is safe here: a repo-controlled + fixture.""" + import pickle + with open(Path(__file__).parent / "data" + / "parsednames_v28_separators.pickle", "rb") as f: + loaded = pickle.load(f) + assert [n.order for n in loaded] == [None, None, None] + assert [str(n) for n in loaded] == [ + "John Smith Jr.", "威廉 莎士比亚", "太郎 山田"] + assert [str(parse(n.original)) for n in loaded] == [ + "John Smith, Jr.", "威廉·莎士比亚", "山田 太郎"] + + +def test_parsedname_order_is_not_compared_and_stores_a_tuple() -> None: + tok = Token("Juan", Span(0, 4), Role.GIVEN) + assert ParsedName("Juan", (tok,), order=FAMILY_FIRST) == ParsedName( + "Juan", (tok,)) + listed = ParsedName("Juan", (tok,), + order=list(FAMILY_FIRST)) # type: ignore[arg-type] + assert listed.order == FAMILY_FIRST and isinstance(listed.order, tuple) + + +def _policy_order(value: object) -> object: + return Policy(name_order=value) # type: ignore[arg-type] + + +def _parsedname_order(value: object) -> object: + return ParsedName("x", (), order=value) # type: ignore[arg-type] + + +# the family: every field holding a name order refuses the same values +# with the same exception (AGENTS.md, "Guard, hint, and emit for the +# WHOLE family") +@pytest.mark.parametrize("build", [_policy_order, _parsedname_order], + ids=["Policy.name_order", "ParsedName.order"]) +@pytest.mark.parametrize("bad, exc, match", [ + (("given", "middle", "family"), TypeError, "must be Role members"), + ("gmf", TypeError, "not a bare string"), + ({Role.GIVEN: 0}, TypeError, "not a mapping"), + (frozenset(FAMILY_FIRST), TypeError, "ordered iterable"), + (set(GIVEN_FIRST), TypeError, "ordered iterable"), + (5, TypeError, "must be an iterable"), + ((Role.GIVEN, Role.FAMILY, Role.MIDDLE), ValueError, "exported orders"), +]) +def test_every_name_order_field_refuses_the_same_values( + build: Callable[[object], object], bad: object, exc: type, + match: str) -> None: + with pytest.raises(exc, match=match): + build(bad) + + +def test_replace_and_capitalized_keep_the_order() -> None: + name = parse("김민준") + assert name.replace(given="서연").order == FAMILY_FIRST + assert name.capitalized().order == FAMILY_FIRST + assert parse("Smith, John").order == GIVEN_FIRST + + def test_tokens_for_accepts_role_string() -> None: name = parse("Juan de la Vega") assert name.tokens_for("family") == name.tokens_for(Role.FAMILY) diff --git a/tools/differential/corpus_rules.jsonl b/tools/differential/corpus_rules.jsonl index 38f351e9a..2bc3355f9 100644 --- a/tools/differential/corpus_rules.jsonl +++ b/tools/differential/corpus_rules.jsonl @@ -190,6 +190,7 @@ "Dr. Smith née Jones" "Dr. Smith, John" "Dr. St. Pierre, Ed" +"Dr. Wang Xiaoming Jr." "Dr. abdul salam" "Dr. de la Vega, Juan" "Dr. inž. Janez Novak" @@ -207,6 +208,7 @@ "Eric H. Holder, Jr., Secretary of State" "Esq. Smith" "É. y É. Smith" +"Ế Nguyen" "FRITZ FREIHERR UND VON BAR" "Field Marshal Bernard Montgomery" "Freiherr St John Smith" @@ -352,6 +354,7 @@ "Jane Smith Vice." "Jane Smith née Jones" "Jane Smith née Jones PhD" +"Jane Smith née Jones, PhD" "Jane Smith née PhD" "Jane Smith née V" "Jane Smith, née Jones" @@ -376,6 +379,7 @@ "Jean Pierre MA DUPONT" "Jeffrey (JD) Bricken" "Jiří Dienstbier ml." +"John (Jack) Smith" "John . Smith" "John Dean Smith" "John Doctor Smith" @@ -409,9 +413,11 @@ "John Smith (MBA PhD.)" "John Smith (Ma)" "John Smith (PhD MBA)" +"John Smith ,Jr." "John Smith - Jones" "John Smith 1.4" "John Smith DO Jones" +"John Smith Dr., Prof." "John Smith Esq." "John Smith II, AD" "John Smith III" @@ -502,6 +508,8 @@ "John Smith, Jones" "John Smith, Jr do" "John Smith, Jr vd" +"John Smith, Jr." +"John Smith, Jr., Dr., Prof." "John Smith, Jr., Lt.Gov." "John Smith, Jr., abdul Dr. Smith" "John Smith, Jr., van der Berg Prof." @@ -565,6 +573,7 @@ "John Smith, vd Ma" "John Smith-Jones" "John Smith-Jones, MD-PhD" +"John Smith, Jr." "John V" "John V, Dr." "John W Ingram V" @@ -695,6 +704,7 @@ "Ménil Christophe de" "Ménil de" "Nguyen Thi Van" +"Nguyen Van Anh" "Nguyen Van Lac" "Nguyen Van Vi" "Nguyen, Thi Van" @@ -775,6 +785,7 @@ "STEVEN HARDMAN, MD, DO, DDS" "Salam, abd Allah" "Sean O'Connor" +"Senator Wang Xiaoming" "Sergeant Major John Smith" "Sgt Marshal Smith" "Shaikh Hamad bin Isa" @@ -860,6 +871,7 @@ "Smith, John X" "Smith, John van der Berg Prof." "Smith, John, Bob (MA)" +"Smith, John, Jr." "Smith, John, MD - PhD" "Smith, John, MD - née Jones Smith" "Smith, John, PhD - and MD" @@ -871,7 +883,9 @@ "Smith, John, and" "Smith, John; MD" "Smith, Jr." +"Smith, Jr., John" "Smith, MA" +"Smith, MD" "Smith, MD ; PhD" "Smith, MD PhD" "Smith, MD; PhD" @@ -921,6 +935,7 @@ "Vincent van Gogh van Beethoven" "Wang M.Eng." "Wang Ma PhD" +"Wang Xiaoming, Jr." "Wilhelm I." "William Shakespeare, the Bard" "Wing Commander Lau" @@ -1082,29 +1097,35 @@ "राम शर्मा साहब मोहन" "शर्मा, राम बाबू" "প্রকৌশলী. Sen" +"ஔவையார் கண்ணன்" "สมชาย ใจดี พ.บ." "김. 민준" "​Dr. John Smith" "​王小明" "ア゙イ タロウ" -"マイケル ジャクソン" +"ジョン ・ スミス" "マイケル ジャクソン" "マイケル・ジャクソン" "ロバート・ダウニー・ジュニア" +"ㄱㄴ 김" "佐藤恵子 国会議員" +"威廉 · 莎士比亚" "威廉·莎士比亚" "威廉・莎士比亚" "安东尼·陈志明" "山田 太郎" "山田 花子 旧姓:佐藤" "山田 タロウ" +"山田 太郎" "岸田文雄衆議院議員" "张简" "柯洁" "毛·泽东" "毛泽东" "王 小 明" +"王 小明" "王君" +"王小明先生" "田中 副社長" "田中 社長" "田中. 太郎" @@ -1123,7 +1144,9 @@ "高橋・一郎" "高橋一郎" "김 민준" +"김, 민준" "김민준" +"김민준 John" "김민준 박사님" "김민준씨" "김민준씨." diff --git a/tools/differential/snapshot.jsonl b/tools/differential/snapshot.jsonl index a224dadad..639f707ca 100644 --- a/tools/differential/snapshot.jsonl +++ b/tools/differential/snapshot.jsonl @@ -10,7 +10,7 @@ {"name": "()"} {"name": "(M.A)", "nickname": "M.A", "ambiguities": ["SUFFIX_OR_NICKNAME"], "alternatives": ["SUFFIX_OR_NICKNAME: credential as suffix (vocabulary)"]} {"name": "(MA) John Smith", "given": "John", "family": "Smith", "nickname": "MA", "ambiguities": ["SUFFIX_OR_NICKNAME"], "alternatives": ["SUFFIX_OR_NICKNAME: credential as suffix (vocabulary)"], "initials": "J. S.", "capitalized_force": "John \"Ma\" Smith"} -{"name": "(김민준.) John Smith", "given": "김", "middle": "민준. John", "family": "Smith", "initials": "김. 민. J. S."} +{"name": "(김민준.) John Smith", "given": "김", "middle": "민준. John", "family": "Smith", "initials": "J. S."} {"name": ","} {"name": ", Ana García López", "given": "Ana", "middle": "García López", "initials": "A. G. L."} {"name": ", Dean", "given": "Dean", "initials": "D."} @@ -40,7 +40,7 @@ {"name": "A. R., Sr. de la Cruz Maria García Rosa Jr.", "order": "FAMILY_FIRST", "title": "Sr.", "family": "A. R. de la Cruz Maria García Rosa", "suffix": "Jr.", "initials": "A. R. C. M. G. R."} {"name": "A.B. Vajpayee", "given": "A.B.", "family": "Vajpayee", "initials": "A. V."} {"name": "AHMAD IBN-ʿALĪ", "given": "AHMAD", "family": "IBN-ʿALĪ", "initials": "A. I.", "capitalized": "Ahmad ibn-ʿAlī"} -{"name": "AKIME Fuseena", "order": "FAMILY_FIRST", "given": "Fuseena", "family": "AKIME", "initials": "F. A.", "capitalized_force": "Fuseena Akime"} +{"name": "AKIME Fuseena", "order": "FAMILY_FIRST", "given": "Fuseena", "family": "AKIME", "initials": "F. A.", "capitalized_force": "Akime Fuseena"} {"name": "ANH DO", "given": "ANH", "family": "DO", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "A. D.", "capitalized": "Anh Do"} {"name": "Aarón Padilla Gutiérrez", "given": "Aarón", "middle": "Padilla", "family": "Gutiérrez", "initials": "A. P. G."} {"name": "Abd Berg", "given": "Abd", "family": "Berg", "initials": "A. B."} @@ -59,7 +59,7 @@ {"name": "Abraham van den Hecken", "given": "Abraham", "family": "van den Hecken", "initials": "A. H."} {"name": "Abu Bakar", "given": "Abu", "family": "Bakar", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "A. B."} {"name": "Abu Bakar Salim", "given": "Abu Bakar", "family": "Salim", "initials": "A. B. S."} -{"name": "Abu Bakr Al Baghdadi, MD", "given": "Abu Bakr", "family": "Al Baghdadi", "suffix": "MD", "initials": "A. B. B.", "capitalized_force": "Abu Bakr al Baghdadi MD"} +{"name": "Abu Bakr Al Baghdadi, MD", "given": "Abu Bakr", "family": "Al Baghdadi", "suffix": "MD", "initials": "A. B. B.", "capitalized_force": "Abu Bakr al Baghdadi, MD"} {"name": "Abu Karim", "given": "Abu", "family": "Karim", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "A. K."} {"name": "Abu-'l-Fidāʾ Ismāʿīl Ibn-ʿAlī", "given": "Abu-'l-Fidāʾ", "middle": "Ismāʿīl", "family": "Ibn-ʿAlī", "initials": "A. I. I.", "capitalized_force": "Abu-'L-Fidāʾ Ismāʿīl ibn-ʿAlī"} {"name": "Abu-'l-Qāsim Maslama Ibn-Aḥmad al-Maǧrīṭī", "given": "Abu-'l-Qāsim", "middle": "Maslama Ibn-Aḥmad", "family": "al-Maǧrīṭī", "initials": "A. M. I. a.", "capitalized_force": "Abu-'L-Qāsim Maslama ibn-Aḥmad al-Maǧrīṭī"} @@ -524,7 +524,7 @@ {"name": "Charles Wilkins", "given": "Charles", "family": "Wilkins", "initials": "C. W."} {"name": "Charles van der van der Berg", "given": "Charles", "family": "van der van der Berg", "initials": "C. B."} {"name": "Chas. Smith", "given": "Chas.", "family": "Smith", "initials": "C. S."} -{"name": "Chas. Smith, Ed", "given": "Chas.", "family": "Smith", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "C. S.", "capitalized_force": "Chas. Smith ED"} +{"name": "Chas. Smith, Ed", "given": "Chas.", "family": "Smith", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "C. S.", "capitalized_force": "Chas. Smith, ED"} {"name": "Chattel, Frederik Jacobus van Rossum", "given": "Frederik", "middle": "Jacobus van Rossum", "family": "Chattel", "initials": "F. J. R. C."} {"name": "Cheikh Anta Diop", "given": "Cheikh", "middle": "Anta", "family": "Diop", "initials": "C. A. D."} {"name": "Chemistry Jane Smith", "given": "Chemistry", "middle": "Jane", "family": "Smith", "initials": "C. J. S."} @@ -602,7 +602,7 @@ {"name": "David Ben Gurion", "given": "David", "middle": "Ben", "family": "Gurion", "initials": "D. B. G."} {"name": "David arap Kirui", "given": "David", "middle": "arap", "family": "Kirui", "initials": "D. a. K.", "capitalized_force": "David Arap Kirui"} {"name": "David zu Sonnegg von Ungnad von Weissenwolf", "given": "David", "middle": "zu Sonnegg von Ungnad", "family": "von Weissenwolf", "initials": "D. S. U. W."} -{"name": "Davis Royce, Ed", "given": "Davis", "family": "Royce", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "D. R.", "capitalized_force": "Davis Royce ED"} +{"name": "Davis Royce, Ed", "given": "Davis", "family": "Royce", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "D. R.", "capitalized_force": "Davis Royce, ED"} {"name": "Daw Thida", "given": "Daw", "family": "Thida", "initials": "D. T."} {"name": "Daði Freyr Pétursson", "given": "Daði", "middle": "Freyr", "family": "Pétursson", "initials": "D. F. P."} {"name": "De Groot", "family": "De Groot", "initials": "G.", "capitalized_force": "de Groot"} @@ -776,17 +776,17 @@ {"name": "Dr Martin Luther King, Jr.", "title": "Dr", "given": "Martin", "middle": "Luther", "family": "King", "suffix": "Jr.", "initials": "M. L. K."} {"name": "Dr Pope Jr", "title": "Dr", "family": "Pope", "suffix": "Jr", "ambiguities": ["TITLE_OR_NAME"], "alternatives": ["TITLE_OR_NAME: title as title (vocabulary)"], "initials": "P."} {"name": "Dr Smith V", "title": "Dr", "given": "Smith", "family": "V", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "S. V."} -{"name": "Dr 田中さん, V.", "title": "Dr", "family": "田中", "suffix": "さん, V.", "initials": "田."} -{"name": "Dr 김민준, Jr.", "title": "Dr", "given": "민준", "family": "김", "suffix": "Jr.", "initials": "민. 김."} -{"name": "Dr 김민준, MA", "title": "Dr", "given": "민준", "family": "김", "suffix": "MA", "initials": "민. 김."} -{"name": "Dr 김민준씨, Jr.", "title": "Dr", "given": "민준", "family": "김", "suffix": "씨, Jr.", "initials": "민. 김."} -{"name": "Dr 김민준씨, V.", "title": "Dr", "given": "민준", "family": "김", "suffix": "씨, V.", "initials": "민. 김."} +{"name": "Dr 田中さん, V.", "title": "Dr", "family": "田中", "suffix": "さん, V."} +{"name": "Dr 김민준, Jr.", "title": "Dr", "given": "민준", "family": "김", "suffix": "Jr."} +{"name": "Dr 김민준, MA", "title": "Dr", "given": "민준", "family": "김", "suffix": "MA"} +{"name": "Dr 김민준씨, Jr.", "title": "Dr", "given": "민준", "family": "김", "suffix": "씨, Jr."} +{"name": "Dr 김민준씨, V.", "title": "Dr", "given": "민준", "family": "김", "suffix": "씨, V."} {"name": "Dr.", "title": "Dr."} {"name": "Dr. (MA)", "title": "Dr.", "nickname": "MA", "ambiguities": ["SUFFIX_OR_NICKNAME"], "alternatives": ["SUFFIX_OR_NICKNAME: credential as suffix (vocabulary)"], "capitalized_force": "Dr. \"Ma\""} {"name": "Dr. Abdul Salam Hassan, MD", "title": "Dr.", "given": "Abdul Salam", "family": "Hassan", "suffix": "MD", "initials": "A. S. H."} {"name": "Dr. Ana García López", "title": "Dr.", "given": "Ana", "middle": "García", "family": "López", "initials": "A. G. L."} {"name": "Dr. Ardelean Dl Daniel Ionescu Dragoș Ioan Jr.", "order": "FAMILY_FIRST", "title": "Dr.", "given": "Dl", "middle": "Daniel Ionescu Dragoș Ioan", "family": "Ardelean", "suffix": "Jr.", "initials": "D. D. I. D. I. A."} -{"name": "Dr. Do Van Johnson, MD", "title": "Dr.", "given": "Do", "family": "Van Johnson", "suffix": "MD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "D. J.", "capitalized_force": "Dr. Do van Johnson MD"} +{"name": "Dr. Do Van Johnson, MD", "title": "Dr.", "given": "Do", "family": "Van Johnson", "suffix": "MD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "D. J.", "capitalized_force": "Dr. Do van Johnson, MD"} {"name": "Dr. Freiherr von Berg, Ed", "title": "Dr.", "given": "Ed", "family": "Freiherr von Berg", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "E. B.", "capitalized_force": "Dr. Ed freiherr von Berg"} {"name": "Dr. Jason", "title": "Dr.", "family": "Jason", "initials": "J."} {"name": "Dr. Jason Ross Jay", "title": "Dr.", "given": "Jason", "middle": "Ross", "family": "Jay", "initials": "J. R. J."} @@ -800,7 +800,7 @@ {"name": "Dr. John Doe III", "title": "Dr.", "given": "John", "family": "Doe", "suffix": "III", "initials": "J. D."} {"name": "Dr. John Doe, Jr.", "title": "Dr.", "given": "John", "family": "Doe", "suffix": "Jr.", "initials": "J. D."} {"name": "Dr. John P. Doe-Ray, CLU", "title": "Dr.", "given": "John", "middle": "P.", "family": "Doe-Ray", "suffix": "CLU", "initials": "J. P. D."} -{"name": "Dr. John P. Doe-Ray, CLU, CFP, LUTC", "title": "Dr.", "given": "John", "middle": "P.", "family": "Doe-Ray", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. P. D.", "capitalized_force": "Dr. John P. Doe-Ray CLU, CFP, Lutc"} +{"name": "Dr. John P. Doe-Ray, CLU, CFP, LUTC", "title": "Dr.", "given": "John", "middle": "P.", "family": "Doe-Ray", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. P. D.", "capitalized_force": "Dr. John P. Doe-Ray, CLU, CFP, Lutc"} {"name": "Dr. John Smith", "title": "Dr.", "given": "John", "family": "Smith", "initials": "J. S."} {"name": "Dr. John Smith Prof.", "title": "Dr. Prof.", "given": "John", "family": "Smith", "initials": "J. S."} {"name": "Dr. John van der Berg", "title": "Dr.", "given": "John", "family": "van der Berg", "initials": "J. B."} @@ -845,6 +845,7 @@ {"name": "Dr. Smith, John", "title": "Dr.", "given": "John", "family": "Smith", "initials": "J. S."} {"name": "Dr. St. Pierre, Ed", "title": "Dr.", "given": "Ed", "family": "St. Pierre", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "E. P.", "capitalized_force": "Dr. Ed st. Pierre"} {"name": "Dr. Van Johnson", "title": "Dr.", "given": "Van", "family": "Johnson", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "V. J."} +{"name": "Dr. Wang Xiaoming Jr.", "title": "Dr.", "given": "Wang", "family": "Xiaoming", "suffix": "Jr.", "initials": "W. X."} {"name": "Dr. Williams", "title": "Dr.", "family": "Williams", "initials": "W."} {"name": "Dr. abdul salam", "title": "Dr.", "given": "abdul", "family": "salam", "initials": "a. s.", "capitalized_force": "Dr. Abdul Salam"} {"name": "Dr. abdul salam ahmed salem", "title": "Dr.", "given": "abdul salam", "middle": "ahmed", "family": "salem", "initials": "a. s. a. s.", "capitalized_force": "Dr. Abdul Salam Ahmed Salem"} @@ -853,9 +854,9 @@ {"name": "Dr. juan garcia", "title": "Dr.", "given": "juan", "family": "garcia", "initials": "j. g.", "capitalized_force": "Dr. Juan Garcia"} {"name": "Dr. med. univ.", "title": "Dr. med.", "family": "univ.", "initials": "u.", "capitalized_force": "Dr. Med. Univ."} {"name": "Dr. med. univ. Margit Popp", "title": "Dr. med. univ.", "given": "Margit", "family": "Popp", "initials": "M. P.", "capitalized_force": "Dr. Med. Univ. Margit Popp"} -{"name": "Dr. med. univ. Margit Popp, MSc", "title": "Dr. med. univ.", "given": "Margit", "family": "Popp", "suffix": "MSc", "initials": "M. P.", "capitalized_force": "Dr. Med. Univ. Margit Popp MSc"} +{"name": "Dr. med. univ. Margit Popp, MSc", "title": "Dr. med. univ.", "given": "Margit", "family": "Popp", "suffix": "MSc", "initials": "M. P.", "capitalized_force": "Dr. Med. Univ. Margit Popp, MSc"} {"name": "Dr. nee Smith PhD Prof.", "title": "Dr. Prof.", "given": "nee", "family": "Smith", "suffix": "PhD", "initials": "n. S.", "capitalized_force": "Dr. Prof. Nee Smith PhD"} -{"name": "Dr. 김민준씨, MA", "title": "Dr.", "given": "민준", "family": "김", "suffix": "씨, MA", "initials": "민. 김."} +{"name": "Dr. 김민준씨, MA", "title": "Dr.", "given": "민준", "family": "김", "suffix": "씨, MA"} {"name": "Dr., John", "given": "John", "family": "Dr.", "initials": "J. D."} {"name": "Dr.philol. Laima Kristīne Eva Sofija van den Volfa Bērziņa-Kalniņa", "title": "Dr.philol.", "given": "Laima", "middle": "Kristīne Eva Sofija", "family": "van den Volfa Bērziņa-Kalniņa", "initials": "L. K. E. S. V. B.", "capitalized_force": "Dr.Philol. Laima Kristīne Eva Sofija van den Volfa Bērziņa-Kalniņa"} {"name": "Dra. Andréia da Silva", "title": "Dra.", "given": "Andréia", "family": "da Silva", "initials": "A. S."} @@ -960,6 +961,7 @@ {"name": "Excma. Dra. Van Dalen Hoogeveen II, Maria da Graça César Martín", "order": "FAMILY_FIRST", "given": "Maria", "middle": "da Graça César Martín", "family": "Excma. Dra. Van Dalen Hoogeveen", "suffix": "II", "initials": "M. G. C. M. E. D. D. H.", "capitalized_force": "Maria da Graça César Martín Excma. Dra. van Dalen Hoogeveen II"} {"name": "Eyck, Jan van", "given": "Jan", "family": "van Eyck", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "J. E."} {"name": "É. y É. Smith", "given": "É.", "middle": "y É.", "family": "Smith", "initials": "É. É. S."} +{"name": "Ế Nguyen", "given": "Ế", "family": "Nguyen", "initials": "Ế. N."} {"name": "F. de Lange", "given": "F.", "family": "de Lange", "initials": "F. L."} {"name": "FRITZ FREIHERR UND VON BAR", "given": "FRITZ", "family": "FREIHERR UND VON BAR", "initials": "F. U.", "capitalized": "Fritz freiherr und von bar"} {"name": "Fabbri Irene", "order": "FAMILY_FIRST", "given": "Irene", "family": "Fabbri", "initials": "I. F."} @@ -1069,7 +1071,7 @@ {"name": "G. M.", "given": "G.", "family": "M.", "initials": "G. M."} {"name": "G. V. M.", "given": "G.", "middle": "V.", "family": "M.", "initials": "G. V. M."} {"name": "GEORGE SHANAHAN IV", "given": "GEORGE", "family": "SHANAHAN", "suffix": "IV", "initials": "G. S.", "capitalized": "George Shanahan IV"} -{"name": "GOMINA MUSA Abɖu-Tɔyib", "order": "FAMILY_FIRST", "given": "MUSA", "middle": "Abɖu-Tɔyib", "family": "GOMINA", "initials": "M. A. G.", "capitalized_force": "Musa Abɖu-Tɔyib Gomina"} +{"name": "GOMINA MUSA Abɖu-Tɔyib", "order": "FAMILY_FIRST", "given": "MUSA", "middle": "Abɖu-Tɔyib", "family": "GOMINA", "initials": "M. A. G.", "capitalized_force": "Gomina Musa Abɖu-Tɔyib"} {"name": "GRACE SMITH", "given": "GRACE", "family": "SMITH", "initials": "G. S.", "capitalized": "Grace Smith"} {"name": "GREGORY HOUSE M.D.", "given": "GREGORY", "family": "HOUSE", "suffix": "M.D.", "initials": "G. H.", "capitalized": "Gregory House M.D."} {"name": "Gabriel García Márquez", "given": "Gabriel", "middle": "García", "family": "Márquez", "initials": "G. G. M."} @@ -1106,7 +1108,7 @@ {"name": "García Márquez, PhD G.J.", "given": "García", "family": "Márquez", "suffix": "PhD G.J.", "initials": "G. M."} {"name": "García y Bellido, Antonio", "given": "Antonio", "family": "García y Bellido", "initials": "A. G. B."} {"name": "Gardner, Augustus P.", "given": "Augustus", "middle": "P.", "family": "Gardner", "initials": "A. P. G."} -{"name": "Gary Strawsburg, PMP, CSCP, CLSSBB", "given": "Gary", "family": "Strawsburg", "suffix": "PMP, CSCP, CLSSBB", "ambiguities": ["COMMA_STRUCTURE"], "initials": "G. S.", "capitalized_force": "Gary Strawsburg PMP, CSCP, Clssbb"} +{"name": "Gary Strawsburg, PMP, CSCP, CLSSBB", "given": "Gary", "family": "Strawsburg", "suffix": "PMP, CSCP, CLSSBB", "ambiguities": ["COMMA_STRUCTURE"], "initials": "G. S.", "capitalized_force": "Gary Strawsburg, PMP, CSCP, Clssbb"} {"name": "Gebhart GF", "given": "Gebhart", "family": "GF", "initials": "G. G.", "capitalized_force": "Gebhart Gf"} {"name": "Geir Jón Magnús Brynjar Skeggjason", "order": "FAMILY_FIRST", "given": "Jón", "middle": "Magnús Brynjar Skeggjason", "family": "Geir", "initials": "J. M. B. S. G."} {"name": "Geir Jón Magnús Brynjar Skeggjason, þingmaður", "given": "þingmaður", "family": "Geir Jón Magnús Brynjar Skeggjason", "initials": "þ. G. J. M. B. S.", "capitalized_force": "Þingmaður Geir Jón Magnús Brynjar Skeggjason"} @@ -1414,10 +1416,10 @@ {"name": "JOHN SMITH PH.D.", "given": "JOHN", "family": "SMITH", "suffix": "PH.D.", "initials": "J. S.", "capitalized": "John Smith Ph.D."} {"name": "JOHN SMITH SAM E.", "given": "JOHN", "family": "SMITH", "suffix": "SAM E.", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "J. S.", "capitalized": "John Smith SAM E."} {"name": "JOHN SMITH VI", "given": "JOHN", "family": "SMITH", "suffix": "VI", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "J. S.", "capitalized": "John Smith VI"} -{"name": "JOHN SMITH, FNP-BC", "given": "JOHN", "family": "SMITH", "suffix": "FNP-BC", "initials": "J. S.", "capitalized": "John Smith FNP-BC"} -{"name": "JOHN SMITH, MA", "given": "JOHN", "family": "SMITH", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized": "John Smith MA"} +{"name": "JOHN SMITH, FNP-BC", "given": "JOHN", "family": "SMITH", "suffix": "FNP-BC", "initials": "J. S.", "capitalized": "John Smith, FNP-BC"} +{"name": "JOHN SMITH, MA", "given": "JOHN", "family": "SMITH", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized": "John Smith, MA"} {"name": "JOHN SMITH, PU-PH", "given": "PU-PH", "family": "JOHN SMITH", "initials": "P. J. S.", "capitalized": "Pu-Ph John Smith"} -{"name": "JOHN SMITH, VD MA", "given": "JOHN", "family": "SMITH", "suffix": "VD MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized": "John Smith VD MA"} +{"name": "JOHN SMITH, VD MA", "given": "JOHN", "family": "SMITH", "suffix": "VD MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized": "John Smith, VD MA"} {"name": "JOHN V", "given": "JOHN", "family": "V", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "J. V.", "capitalized": "John V"} {"name": "JOSE DA SILVA FH", "given": "JOSE", "family": "DA SILVA", "suffix": "FH", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (declared)"], "initials": "J. S.", "capitalized": "Jose da Silva Fh"} {"name": "JOSE E MARIA SANTOS", "given": "JOSE", "middle": "E MARIA", "family": "SANTOS", "ambiguities": ["CONJUNCTION_OR_INITIAL"], "alternatives": ["CONJUNCTION_OR_INITIAL: conjunction as given (vocabulary)"], "initials": "J. E. M. S.", "capitalized": "Jose E Maria Santos"} @@ -1528,7 +1530,7 @@ {"name": "Jane Doe nee Smith ma jd", "given": "Jane", "family": "Doe", "suffix": "ma jd", "maiden": "Smith", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as maiden (declared)", "SUFFIX_OR_NAME: name as maiden (declared)"], "initials": "J. D.", "capitalized_force": "Jane Doe (Smith) MA JD"} {"name": "Jane Doe nee Yo-Yo Ma", "given": "Jane", "family": "Doe", "maiden": "Yo-Yo Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "J. D."} {"name": "Jane Doe née Jones Smith V", "given": "Jane", "family": "Doe", "suffix": "V", "maiden": "Jones Smith", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: initial as maiden (shape)"], "initials": "J. D."} -{"name": "Jane Doe, MS LAc", "given": "Jane", "family": "Doe", "suffix": "MS LAc", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. D.", "capitalized_force": "Jane Doe MS LAC"} +{"name": "Jane Doe, MS LAc", "given": "Jane", "family": "Doe", "suffix": "MS LAc", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. D.", "capitalized_force": "Jane Doe, MS LAC"} {"name": "Jane Mac Beth", "given": "Jane", "family": "Mac Beth", "initials": "J. B.", "capitalized_force": "Jane mac Beth"} {"name": "Jane Smith", "given": "Jane", "family": "Smith", "initials": "J. S."} {"name": "Jane Smith (Jones)", "given": "Jane", "family": "Smith", "nickname": "Jones", "initials": "J. S."} @@ -1543,6 +1545,7 @@ {"name": "Jane Smith born Jones", "given": "Jane", "middle": "Smith born", "family": "Jones", "initials": "J. S. b. J.", "capitalized_force": "Jane Smith Born Jones"} {"name": "Jane Smith née Jones", "given": "Jane", "family": "Smith", "maiden": "Jones", "initials": "J. S."} {"name": "Jane Smith née Jones PhD", "given": "Jane", "family": "Smith", "suffix": "PhD", "maiden": "Jones", "initials": "J. S."} +{"name": "Jane Smith née Jones, PhD", "given": "Jane", "family": "Smith", "suffix": "PhD", "maiden": "Jones", "initials": "J. S."} {"name": "Jane Smith née PhD", "given": "Jane", "middle": "Smith", "family": "née", "suffix": "PhD", "initials": "J. S. n.", "capitalized_force": "Jane Smith Née PhD"} {"name": "Jane Smith née V", "given": "Jane", "family": "Smith", "maiden": "V", "initials": "J. S."} {"name": "Jane Smith, née Jones", "given": "née", "middle": "Jones", "family": "Jane Smith", "initials": "n. J. J. S.", "capitalized_force": "Née Jones Jane Smith"} @@ -1630,6 +1633,7 @@ {"name": "John Q Doe", "given": "John", "middle": "Q", "family": "Doe", "initials": "J. Q. D."} {"name": "John \"Jack\" Kennedy", "given": "John", "family": "Kennedy", "nickname": "Jack", "initials": "J. K."} {"name": "John & Jane", "given": "John & Jane", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "J. J."} +{"name": "John (Jack) Smith", "given": "John", "family": "Smith", "nickname": "Jack", "initials": "J. S."} {"name": "John . Smith", "given": "John", "middle": ".", "family": "Smith", "initials": "J. .. S."} {"name": "John A. Doe", "given": "John", "middle": "A.", "family": "Doe", "initials": "J. A. D."} {"name": "John A. Doe III", "given": "John", "middle": "A.", "family": "Doe", "suffix": "III", "initials": "J. A. D."} @@ -1649,7 +1653,7 @@ {"name": "John Doe Msc.Ed.", "given": "John", "family": "Doe", "suffix": "Msc.Ed.", "initials": "J. D."} {"name": "John Doe do", "given": "John", "family": "Doe", "suffix": "do", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (declared)"], "initials": "J. D.", "capitalized_force": "John Doe DO"} {"name": "John Doe jr., MD", "given": "John", "family": "Doe", "suffix": "jr., MD", "initials": "J. D.", "capitalized_force": "John Doe Jr., MD"} -{"name": "John Doe, CLU, CFP, LUTC", "given": "John", "family": "Doe", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. D.", "capitalized_force": "John Doe CLU, CFP, Lutc"} +{"name": "John Doe, CLU, CFP, LUTC", "given": "John", "family": "Doe", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. D.", "capitalized_force": "John Doe, CLU, CFP, Lutc"} {"name": "John Doe, Jr.", "given": "John", "family": "Doe", "suffix": "Jr.", "initials": "J. D."} {"name": "John Doe, Jr.,,", "given": "John", "family": "Doe", "suffix": "Jr.", "initials": "J. D."} {"name": "John Doe, MD - PhD - FACS", "given": "John", "family": "Doe", "suffix": "MD, PhD, FACS", "initials": "J. D."} @@ -1657,7 +1661,7 @@ {"name": "John Doe, MD, PhD", "given": "John", "family": "Doe", "suffix": "MD, PhD", "initials": "J. D."} {"name": "John Doe, MD-PhD-", "given": "MD-PhD-", "family": "John Doe", "initials": "M. J. D.", "capitalized_force": "Md-PhD- John Doe"} {"name": "John Doe, Msc.Ed.", "given": "John", "family": "Doe", "suffix": "Msc.Ed.", "initials": "J. D."} -{"name": "John Doe, Phd, Jr", "given": "John", "family": "Doe", "suffix": "Phd, Jr", "initials": "J. D.", "capitalized_force": "John Doe PhD, Jr"} +{"name": "John Doe, Phd, Jr", "given": "John", "family": "Doe", "suffix": "Phd, Jr", "initials": "J. D.", "capitalized_force": "John Doe, PhD, Jr"} {"name": "John E Smith", "given": "John", "middle": "E", "family": "Smith", "initials": "J. E. S."} {"name": "John Edgar Casey Williams III", "given": "John", "middle": "Edgar Casey", "family": "Williams", "suffix": "III", "initials": "J. E. C. W."} {"name": "John F Kennedy", "given": "John", "middle": "F", "family": "Kennedy", "initials": "J. F. K."} @@ -1681,7 +1685,7 @@ {"name": "John Ma", "given": "John", "family": "Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "J. M."} {"name": "John Major. Smith", "given": "John", "middle": "Major.", "family": "Smith", "initials": "J. M. S."} {"name": "John Mkwawa", "given": "John", "family": "Mkwawa", "initials": "J. M."} -{"name": "John P. Doe, CLU, CFP, LUTC", "given": "John", "middle": "P.", "family": "Doe", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. P. D.", "capitalized_force": "John P. Doe CLU, CFP, Lutc"} +{"name": "John P. Doe, CLU, CFP, LUTC", "given": "John", "middle": "P.", "family": "Doe", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. P. D.", "capitalized_force": "John P. Doe, CLU, CFP, Lutc"} {"name": "John Ph. D.", "given": "John", "suffix": "Ph. D.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "J."} {"name": "John PhD Smith", "given": "John", "middle": "PhD", "family": "Smith", "initials": "J. P. S."} {"name": "John Pharm D", "given": "John", "middle": "Pharm", "family": "D", "initials": "J. P. D."} @@ -1704,12 +1708,14 @@ {"name": "John Smith (MBA PhD.)", "given": "John", "family": "Smith", "suffix": "MBA PhD.", "initials": "J. S."} {"name": "John Smith (Ma)", "given": "John", "family": "Smith", "nickname": "Ma", "ambiguities": ["SUFFIX_OR_NICKNAME"], "alternatives": ["SUFFIX_OR_NICKNAME: credential as suffix (vocabulary)"], "initials": "J. S."} {"name": "John Smith (PhD MBA)", "given": "John", "family": "Smith", "nickname": "PhD MBA", "initials": "J. S.", "capitalized_force": "John \"PhD Mba\" Smith"} +{"name": "John Smith ,Jr.", "given": "John", "family": "Smith", "suffix": "Jr.", "initials": "J. S."} {"name": "John Smith - Jones", "given": "John", "middle": "Smith -", "family": "Jones", "initials": "J. S. -. J."} {"name": "John Smith 1.4", "given": "John", "middle": "Smith", "family": "1.4", "initials": "J. S. 1."} {"name": "John Smith B.Tech.", "given": "John", "family": "Smith", "suffix": "B.Tech.", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "J. S.", "capitalized_force": "John Smith B.TECH."} {"name": "John Smith C.H.A.", "given": "John", "family": "Smith", "suffix": "C.H.A.", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "J. S."} {"name": "John Smith DO Jones", "given": "John", "middle": "Smith", "family": "DO Jones", "initials": "J. S. J.", "capitalized_force": "John Smith do Jones"} {"name": "John Smith Dr.", "title": "Dr.", "given": "John", "family": "Smith", "initials": "J. S."} +{"name": "John Smith Dr., Prof.", "title": "Dr. Prof.", "given": "John", "family": "Smith", "initials": "J. S."} {"name": "John Smith E.S.Q.", "given": "John", "family": "Smith", "suffix": "E.S.Q.", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "J. S."} {"name": "John Smith Esq", "given": "John", "family": "Smith", "suffix": "Esq", "initials": "J. S."} {"name": "John Smith Esq.", "given": "John", "family": "Smith", "suffix": "Esq.", "initials": "J. S."} @@ -1802,8 +1808,8 @@ {"name": "John Smith vi", "given": "John", "family": "Smith", "suffix": "vi", "initials": "J. S.", "capitalized_force": "John Smith VI"} {"name": "John Smith «MA»", "given": "John", "family": "Smith", "suffix": "MA", "initials": "J. S."} {"name": "John Smith 「MA」", "given": "John", "family": "Smith", "suffix": "MA", "initials": "J. S."} -{"name": "John Smith 博. 士.", "given": "John", "middle": "Smith 博.", "family": "士.", "initials": "J. S. 博. 士."} -{"name": "John Smith 田.中.", "given": "John", "middle": "Smith", "family": "田.中.", "initials": "J. S. 田."} +{"name": "John Smith 博. 士.", "given": "John", "middle": "Smith 博.", "family": "士.", "initials": "J. S."} +{"name": "John Smith 田.中.", "given": "John", "middle": "Smith", "family": "田.中.", "initials": "J. S."} {"name": "John Smith, 1.4", "given": "1.4", "family": "John Smith", "initials": "1. J. S."} {"name": "John Smith, A-B", "given": "A-B", "family": "John Smith", "initials": "A. J. S."} {"name": "John Smith, A.B.", "given": "A.B.", "family": "John Smith", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (shape)"], "initials": "A. J. S."} @@ -1815,50 +1821,51 @@ {"name": "John Smith, Dr. / and MD", "title": "Dr. and MD", "given": "John", "family": "Smith", "initials": "J. S.", "capitalized_force": "Dr. and Md John Smith"} {"name": "John Smith, Dr. J.씨", "title": "Dr.", "given": "John", "family": "Smith", "suffix": "J.씨", "initials": "J. S."} {"name": "John Smith, Dr; MD", "title": "Dr;", "given": "John", "family": "Smith", "suffix": "MD", "initials": "J. S."} -{"name": "John Smith, Ed", "given": "John", "family": "Smith", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith ED"} -{"name": "John Smith, Ed Ma", "given": "John", "family": "Smith", "suffix": "Ed Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith ED MA"} +{"name": "John Smith, Ed", "given": "John", "family": "Smith", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith, ED"} +{"name": "John Smith, Ed Ma", "given": "John", "family": "Smith", "suffix": "Ed Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith, ED MA"} {"name": "John Smith, Jones", "given": "Jones", "family": "John Smith", "initials": "J. J. S."} -{"name": "John Smith, Jr do", "given": "John", "family": "Smith", "suffix": "Jr do", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith Jr DO"} -{"name": "John Smith, Jr vd", "given": "John", "family": "Smith", "suffix": "Jr vd", "initials": "J. S.", "capitalized_force": "John Smith Jr VD"} +{"name": "John Smith, Jr do", "given": "John", "family": "Smith", "suffix": "Jr do", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith, Jr DO"} +{"name": "John Smith, Jr vd", "given": "John", "family": "Smith", "suffix": "Jr vd", "initials": "J. S.", "capitalized_force": "John Smith, Jr VD"} {"name": "John Smith, Jr.", "given": "John", "family": "Smith", "suffix": "Jr.", "initials": "J. S."} {"name": "John Smith, Jr. Ph. D.", "given": "John", "family": "Smith", "suffix": "Jr. Ph. D.", "initials": "J. S."} +{"name": "John Smith, Jr., Dr., Prof.", "title": "Dr. Prof.", "given": "John", "family": "Smith", "suffix": "Jr.", "initials": "J. S."} {"name": "John Smith, Jr., Lt.Gov.", "title": "Lt.Gov.", "given": "John", "family": "Smith", "suffix": "Jr.", "initials": "J. S."} -{"name": "John Smith, Jr., abdul Dr. Smith", "title": "Dr.", "given": "John", "family": "Smith", "suffix": "Jr., abdul Smith", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "Dr. John Smith Jr., Abdul Smith"} -{"name": "John Smith, Jr., van der Berg Prof.", "title": "Prof.", "given": "John", "family": "Smith", "suffix": "Jr., van der Berg", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "Prof. John Smith Jr., Van Der Berg"} +{"name": "John Smith, Jr., abdul Dr. Smith", "title": "Dr.", "given": "John", "family": "Smith", "suffix": "Jr., abdul Smith", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "Dr. John Smith, Jr., Abdul Smith"} +{"name": "John Smith, Jr., van der Berg Prof.", "title": "Prof.", "given": "John", "family": "Smith", "suffix": "Jr., van der Berg", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "Prof. John Smith, Jr., Van Der Berg"} {"name": "John Smith, LEED AP", "given": "John", "family": "Smith", "suffix": "LEED AP", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} {"name": "John Smith, M. D.", "given": "M.", "middle": "D.", "family": "John Smith", "initials": "M. D. J. S."} {"name": "John Smith, M.D./Ph.D.", "given": "John", "family": "Smith", "suffix": "M.D./Ph.D.", "initials": "J. S."} {"name": "John Smith, M.D.; Ph.D.", "given": "John", "family": "Smith", "suffix": "M.D.; Ph.D.", "initials": "J. S."} {"name": "John Smith, MA", "given": "John", "family": "Smith", "suffix": "MA", "initials": "J. S."} -{"name": "John Smith, MA/PHD", "given": "John", "family": "Smith", "suffix": "MA/PHD", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith MA/PhD"} +{"name": "John Smith, MA/PHD", "given": "John", "family": "Smith", "suffix": "MA/PHD", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith, MA/PhD"} {"name": "John Smith, MA/PhD", "given": "MA/PhD", "family": "John Smith", "initials": "M. J. S.", "capitalized_force": "Ma/PhD John Smith"} {"name": "John Smith, MA; PhD", "given": "John", "family": "Smith", "suffix": "MA; PhD", "initials": "J. S."} {"name": "John Smith, MD - Chief of Surgery", "title": "Chief of Surgery", "given": "John", "family": "Smith", "suffix": "MD", "initials": "J. S."} {"name": "John Smith, MD - PhD", "given": "John", "family": "Smith", "suffix": "MD, PhD", "initials": "J. S."} {"name": "John Smith, MD / PhD", "given": "John", "family": "Smith", "suffix": "MD, PhD", "initials": "J. S."} {"name": "John Smith, MD ; PhD", "given": "John", "family": "Smith", "suffix": "MD, PhD", "initials": "J. S."} -{"name": "John Smith, MD MEng", "given": "John", "family": "Smith", "suffix": "MD MEng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith MD MENG"} +{"name": "John Smith, MD MEng", "given": "John", "family": "Smith", "suffix": "MD MEng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith, MD MENG"} {"name": "John Smith, MD – PhD", "given": "John", "family": "Smith", "suffix": "MD – PhD", "initials": "J. S."} {"name": "John Smith, MD, Bart", "given": "John", "family": "Smith", "suffix": "MD, Bart", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S."} -{"name": "John Smith, MD, Ma", "given": "John", "family": "Smith", "suffix": "MD, Ma", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "John Smith MD, MA"} -{"name": "John Smith, MD, Ms", "given": "John", "family": "Smith", "suffix": "MD, Ms", "initials": "J. S.", "capitalized_force": "John Smith MD, MS"} +{"name": "John Smith, MD, Ma", "given": "John", "family": "Smith", "suffix": "MD, Ma", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "John Smith, MD, MA"} +{"name": "John Smith, MD, Ms", "given": "John", "family": "Smith", "suffix": "MD, Ms", "initials": "J. S.", "capitalized_force": "John Smith, MD, MS"} {"name": "John Smith, MD, R.A.I.", "given": "John", "family": "Smith", "suffix": "MD, R.A.I.", "initials": "J. S."} -{"name": "John Smith, MD, XYZ", "given": "John", "family": "Smith", "suffix": "MD, XYZ", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "John Smith MD, Xyz"} +{"name": "John Smith, MD, XYZ", "given": "John", "family": "Smith", "suffix": "MD, XYZ", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "John Smith, MD, Xyz"} {"name": "John Smith, MD,, Jr.", "given": "John", "family": "Smith", "suffix": "MD, Jr.", "initials": "J. S."} {"name": "John Smith, MD- PhD", "given": "MD-", "family": "John Smith", "suffix": "PhD", "initials": "M. J. S.", "capitalized_force": "Md- John Smith PhD"} {"name": "John Smith, MD/ PhD", "given": "MD/", "family": "John Smith", "suffix": "PhD", "initials": "M. J. S.", "capitalized_force": "Md/ John Smith PhD"} {"name": "John Smith, MD/PhD", "given": "John", "family": "Smith", "suffix": "MD/PhD", "initials": "J. S."} {"name": "John Smith, MD; PhD", "given": "John", "family": "Smith", "suffix": "MD; PhD", "initials": "J. S."} {"name": "John Smith, MD;PhD", "given": "John", "family": "Smith", "suffix": "MD;PhD", "initials": "J. S."} -{"name": "John Smith, MEng PhD", "given": "John", "family": "Smith", "suffix": "MEng PhD", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith MENG PhD"} +{"name": "John Smith, MEng PhD", "given": "John", "family": "Smith", "suffix": "MEng PhD", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith, MENG PhD"} {"name": "John Smith, MS-OMPT", "given": "John", "family": "Smith", "suffix": "MS-OMPT", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} {"name": "John Smith, MS-V", "given": "John", "family": "Smith", "suffix": "MS-V", "initials": "J. S."} -{"name": "John Smith, Ma", "given": "John", "family": "Smith", "suffix": "Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith MA"} +{"name": "John Smith, Ma", "given": "John", "family": "Smith", "suffix": "Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. S.", "capitalized_force": "John Smith, MA"} {"name": "John Smith, Md-Rn", "given": "Md-Rn", "family": "John Smith", "initials": "M. J. S."} {"name": "John Smith, Mr.", "title": "Mr.", "given": "John", "family": "Smith", "initials": "J. S."} {"name": "John Smith, Mr. Jr.", "title": "Mr.", "given": "John", "family": "Smith", "suffix": "Jr.", "initials": "J. S."} {"name": "John Smith, Mr. and Mrs.", "title": "Mr. and Mrs.", "given": "John", "family": "Smith", "initials": "J. S."} -{"name": "John Smith, Ms Ma", "given": "John", "family": "Smith", "suffix": "Ms Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith MS MA"} +{"name": "John Smith, Ms Ma", "given": "John", "family": "Smith", "suffix": "Ms Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith, MS MA"} {"name": "John Smith, PU-PH", "given": "John", "family": "Smith", "suffix": "PU-PH", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} {"name": "John Smith, PU/PH, Jr.", "given": "John", "family": "Smith", "suffix": "PU/PH, Jr.", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} {"name": "John Smith, Ph. D.", "given": "John", "family": "Smith", "suffix": "Ph. D.", "initials": "J. S."} @@ -1868,12 +1875,12 @@ {"name": "John Smith, PhD", "given": "John", "family": "Smith", "suffix": "PhD", "initials": "J. S."} {"name": "John Smith, PhD DO DO", "given": "John", "family": "Smith", "suffix": "PhD DO DO", "initials": "J. S."} {"name": "John Smith, PhD Jones", "given": "John", "family": "Smith", "suffix": "PhD Jones", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} -{"name": "John Smith, PhD MEng", "given": "John", "family": "Smith", "suffix": "PhD MEng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith PhD MENG"} -{"name": "John Smith, PhD Ma", "given": "John", "family": "Smith", "suffix": "PhD Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith PhD MA"} +{"name": "John Smith, PhD MEng", "given": "John", "family": "Smith", "suffix": "PhD MEng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith, PhD MENG"} +{"name": "John Smith, PhD Ma", "given": "John", "family": "Smith", "suffix": "PhD Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith, PhD MA"} {"name": "John Smith, PhD X.Y.", "given": "John", "family": "Smith", "suffix": "PhD X.Y.", "initials": "J. S."} {"name": "John Smith, PhD XYZ", "given": "John", "family": "Smith", "suffix": "PhD XYZ", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} -{"name": "John Smith, PhD vd DO", "given": "John", "family": "Smith", "suffix": "PhD vd DO", "initials": "J. S.", "capitalized_force": "John Smith PhD VD DO"} -{"name": "John Smith, PhD-Md", "given": "John", "family": "Smith", "suffix": "PhD-Md", "initials": "J. S.", "capitalized_force": "John Smith PhD-MD"} +{"name": "John Smith, PhD vd DO", "given": "John", "family": "Smith", "suffix": "PhD vd DO", "initials": "J. S.", "capitalized_force": "John Smith, PhD VD DO"} +{"name": "John Smith, PhD-Md", "given": "John", "family": "Smith", "suffix": "PhD-Md", "initials": "J. S.", "capitalized_force": "John Smith, PhD-MD"} {"name": "John Smith, Pharm D", "given": "John", "family": "Smith", "suffix": "Pharm D", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} {"name": "John Smith, Phd-Md", "given": "Phd-Md", "family": "John Smith", "initials": "P. J. S.", "capitalized_force": "PhD-Md John Smith"} {"name": "John Smith, Prof. - of Surgery", "title": "Prof. of Surgery", "given": "John", "family": "Smith", "initials": "J. S."} @@ -1890,11 +1897,12 @@ {"name": "John Smith, X.Y.Z. MA", "given": "John", "family": "Smith", "suffix": "X.Y.Z. MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} {"name": "John Smith, XYZ", "given": "John", "family": "Smith", "suffix": "XYZ", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S."} {"name": "John Smith, XYZ- QRST", "given": "XYZ-", "middle": "QRST", "family": "John Smith", "initials": "X. Q. J. S.", "capitalized_force": "Xyz- Qrst John Smith"} -{"name": "John Smith, md-phd", "given": "John", "family": "Smith", "suffix": "md-phd", "initials": "J. S.", "capitalized_force": "John Smith MD-PhD"} -{"name": "John Smith, otr/l", "given": "John", "family": "Smith", "suffix": "otr/l", "initials": "J. S.", "capitalized_force": "John Smith OTR/L"} -{"name": "John Smith, vd Ma", "given": "John", "family": "Smith", "suffix": "vd Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith VD MA"} +{"name": "John Smith, md-phd", "given": "John", "family": "Smith", "suffix": "md-phd", "initials": "J. S.", "capitalized_force": "John Smith, MD-PhD"} +{"name": "John Smith, otr/l", "given": "John", "family": "Smith", "suffix": "otr/l", "initials": "J. S.", "capitalized_force": "John Smith, OTR/L"} +{"name": "John Smith, vd Ma", "given": "John", "family": "Smith", "suffix": "vd Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. S.", "capitalized_force": "John Smith, VD MA"} {"name": "John Smith-Jones", "given": "John", "family": "Smith-Jones", "initials": "J. S."} {"name": "John Smith-Jones, MD-PhD", "given": "John", "family": "Smith-Jones", "suffix": "MD-PhD", "initials": "J. S."} +{"name": "John Smith, Jr.", "given": "John", "family": "Smith", "suffix": "Jr.", "initials": "J. S."} {"name": "John V", "given": "John", "family": "V", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "J. V."} {"name": "John V, Dr.", "title": "Dr.", "given": "John", "family": "V", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "J. V."} {"name": "John V. Smith", "given": "John", "middle": "V.", "family": "Smith", "initials": "J. V. S."} @@ -1916,7 +1924,7 @@ {"name": "John of Bishop", "given": "John of Bishop", "ambiguities": ["TITLE_OR_NAME"], "alternatives": ["TITLE_OR_NAME: title as title (vocabulary)"], "initials": "J. B."} {"name": "John of Judge", "given": "John of Judge", "ambiguities": ["TITLE_OR_NAME"], "alternatives": ["TITLE_OR_NAME: title as title (vocabulary)"], "initials": "J. J."} {"name": "John of the Doe", "given": "John of the Doe", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "J. D."} -{"name": "John van Buren, Ed", "given": "John", "family": "van Buren", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. B.", "capitalized_force": "John van Buren ED"} +{"name": "John van Buren, Ed", "given": "John", "family": "van Buren", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "J. B.", "capitalized_force": "John van Buren, ED"} {"name": "John van Mc", "given": "John", "family": "van Mc", "initials": "J. v. M.", "capitalized_force": "John Van Mc"} {"name": "John van der Berg", "given": "John", "family": "van der Berg", "initials": "J. B."} {"name": "John van der Berg Ma", "given": "John", "family": "van der Berg Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "J. B. M."} @@ -1930,8 +1938,8 @@ {"name": "John y Jane", "given": "John", "middle": "y", "family": "Jane", "initials": "J. y. J."} {"name": "John й Smith", "given": "John", "middle": "й", "family": "Smith", "initials": "J. й. S."} {"name": "John “Jack” Kennedy", "given": "John", "family": "Kennedy", "nickname": "Jack", "initials": "J. K."} -{"name": "John 王", "given": "John", "family": "王", "initials": "J. 王."} -{"name": "John 田中さん, XYZ", "given": "John", "family": "田中", "suffix": "さん, XYZ", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J. 田."} +{"name": "John 王", "given": "John", "family": "王", "initials": "J."} +{"name": "John 田中さん, XYZ", "given": "John", "family": "田中", "suffix": "さん, XYZ", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "J."} {"name": "John 「Jack」 Smith", "given": "John", "family": "Smith", "nickname": "Jack", "initials": "J. S."} {"name": "John, Smith, Dr.", "title": "Dr.", "given": "Smith", "family": "John", "initials": "S. J."} {"name": "Johnson Mary", "order": "FAMILY_FIRST", "given": "Mary", "family": "Johnson", "initials": "M. J."} @@ -2121,9 +2129,9 @@ {"name": "Jānis", "given": "Jānis", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "J."} {"name": "Jānis", "order": "FAMILY_FIRST", "family": "Jānis", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "J."} {"name": "K. Sivakumar", "given": "K.", "family": "Sivakumar", "initials": "K. S."} -{"name": "KALAM Alɛ Mustafa", "order": "FAMILY_FIRST", "given": "Alɛ", "middle": "Mustafa", "family": "KALAM", "initials": "A. M. K.", "capitalized_force": "Alɛ Mustafa Kalam"} -{"name": "KANSULO Iiɖa", "order": "FAMILY_FIRST", "given": "Iiɖa", "family": "KANSULO", "initials": "I. K.", "capitalized_force": "Iiɖa Kansulo"} -{"name": "KIM, AE-RA", "family": "KIM", "suffix": "AE-RA", "initials": "K.", "capitalized": "Kim AE-RA"} +{"name": "KALAM Alɛ Mustafa", "order": "FAMILY_FIRST", "given": "Alɛ", "middle": "Mustafa", "family": "KALAM", "initials": "A. M. K.", "capitalized_force": "Kalam Alɛ Mustafa"} +{"name": "KANSULO Iiɖa", "order": "FAMILY_FIRST", "given": "Iiɖa", "family": "KANSULO", "initials": "I. K.", "capitalized_force": "Kansulo Iiɖa"} +{"name": "KIM, AE-RA", "family": "KIM", "suffix": "AE-RA", "initials": "K.", "capitalized": "Kim, AE-RA"} {"name": "Kajal Patel Hiring Globally", "given": "Kajal", "middle": "Patel Hiring", "family": "Globally", "initials": "K. P. H. G."} {"name": "Kalniņa Aina", "order": "FAMILY_FIRST", "given": "Aina", "family": "Kalniņa", "initials": "A. K."} {"name": "Kamāl Yūsuf al-Ḥāǧǧ", "given": "Kamāl", "middle": "Yūsuf", "family": "al-Ḥāǧǧ", "initials": "K. Y. a."} @@ -2346,16 +2354,16 @@ {"name": "Lúcio de Mendonça", "given": "Lúcio", "family": "de Mendonça", "initials": "L. M."} {"name": "Lžedmitrij II.", "given": "Lžedmitrij", "suffix": "II.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "L."} {"name": "M. Jean-Nicolas Louis Marcel de Bouchart fils", "given": "M.", "middle": "Jean-Nicolas Louis Marcel", "family": "de Bouchart", "suffix": "fils", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (declared)"], "initials": "M. J. L. M. B."} -{"name": "M. de Bouchart Jean-Nicolas Louis Marcel fils", "order": "FAMILY_FIRST", "given": "de Bouchart Jean-Nicolas Louis Marcel", "family": "M.", "suffix": "fils", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "d. B. J. L. M. M.", "capitalized_force": "De Bouchart Jean-Nicolas Louis Marcel M. fils"} -{"name": "MANƉELA Rolanɖ Alfɔns", "order": "FAMILY_FIRST", "given": "Rolanɖ", "middle": "Alfɔns", "family": "MANƉELA", "initials": "R. A. M.", "capitalized_force": "Rolanɖ Alfɔns Manɖela"} +{"name": "M. de Bouchart Jean-Nicolas Louis Marcel fils", "order": "FAMILY_FIRST", "given": "de Bouchart Jean-Nicolas Louis Marcel", "family": "M.", "suffix": "fils", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "d. B. J. L. M. M.", "capitalized_force": "M. De Bouchart Jean-Nicolas Louis Marcel fils"} +{"name": "MANƉELA Rolanɖ Alfɔns", "order": "FAMILY_FIRST", "given": "Rolanɖ", "middle": "Alfɔns", "family": "MANƉELA", "initials": "R. A. M.", "capitalized_force": "Manɖela Rolanɖ Alfɔns"} {"name": "MARIA DA SILVA E SOUZA", "given": "MARIA", "family": "DA SILVA E SOUZA", "ambiguities": ["CONJUNCTION_OR_INITIAL"], "alternatives": ["CONJUNCTION_OR_INITIAL: conjunction as family (vocabulary)"], "initials": "M. S. E. S.", "capitalized": "Maria da Silva E Souza"} {"name": "MD - DO - DDS", "given": "MD", "middle": "-", "family": "DO -", "suffix": "DDS", "initials": "M. -. -.", "capitalized": "Md - do - DDS"} -{"name": "MD Chirurgie dentară von der Ruhr Prof. dr. Eva-Eleonora Karl Hans Jr.", "order": "FAMILY_FIRST", "given": "Chirurgie", "middle": "dentară von der Ruhr Prof. dr. Eva-Eleonora Karl Hans", "family": "MD", "suffix": "Jr.", "initials": "C. d. R. P. d. E. K. H. M.", "capitalized_force": "Chirurgie Dentară von der Ruhr Prof. Dr. Eva-Eleonora Karl Hans Md Jr."} +{"name": "MD Chirurgie dentară von der Ruhr Prof. dr. Eva-Eleonora Karl Hans Jr.", "order": "FAMILY_FIRST", "given": "Chirurgie", "middle": "dentară von der Ruhr Prof. dr. Eva-Eleonora Karl Hans", "family": "MD", "suffix": "Jr.", "initials": "C. d. R. P. d. E. K. H. M.", "capitalized_force": "Md Chirurgie Dentară von der Ruhr Prof. Dr. Eva-Eleonora Karl Hans Jr."} {"name": "MD DDS", "given": "MD", "suffix": "DDS", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "M.", "capitalized": "Md DDS"} -{"name": "MD DDS Dut.ra Prof.ra von Brühl González Domingo Maria Giusepa Juana Teresa", "order": "FAMILY_FIRST", "given": "DDS", "middle": "Dut.ra Prof.ra von Brühl González Domingo Maria Giusepa Juana Teresa", "family": "MD", "initials": "D. D. P. B. G. D. M. G. J. T. M.", "capitalized_force": "Dds Dut.Ra Prof.Ra von Brühl González Domingo Maria Giusepa Juana Teresa Md"} -{"name": "MD DDS von Brühl César Martín Ada Cornelia", "order": "FAMILY_FIRST", "given": "DDS", "middle": "von Brühl César Martín Ada Cornelia", "family": "MD", "initials": "D. B. C. M. A. C. M.", "capitalized_force": "Dds von Brühl César Martín Ada Cornelia Md"} +{"name": "MD DDS Dut.ra Prof.ra von Brühl González Domingo Maria Giusepa Juana Teresa", "order": "FAMILY_FIRST", "given": "DDS", "middle": "Dut.ra Prof.ra von Brühl González Domingo Maria Giusepa Juana Teresa", "family": "MD", "initials": "D. D. P. B. G. D. M. G. J. T. M.", "capitalized_force": "Md Dds Dut.Ra Prof.Ra von Brühl González Domingo Maria Giusepa Juana Teresa"} +{"name": "MD DDS von Brühl César Martín Ada Cornelia", "order": "FAMILY_FIRST", "given": "DDS", "middle": "von Brühl César Martín Ada Cornelia", "family": "MD", "initials": "D. B. C. M. A. C. M.", "capitalized_force": "Md Dds von Brühl César Martín Ada Cornelia"} {"name": "MD, DO, DDS", "given": "DO", "family": "MD", "suffix": "DDS", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "D. M.", "capitalized": "Do Md DDS"} -{"name": "MD, PHD", "family": "MD", "suffix": "PHD", "initials": "M.", "capitalized": "Md PhD"} +{"name": "MD, PHD", "family": "MD", "suffix": "PHD", "initials": "M.", "capitalized": "Md, PhD"} {"name": "MP Pēteris Kārlis Ozoliņš", "given": "MP", "middle": "Pēteris Kārlis", "family": "Ozoliņš", "initials": "M. P. K. O.", "capitalized_force": "Mp Pēteris Kārlis Ozoliņš"} {"name": "MSc Dr. med. univ.", "given": "MSc", "middle": "Dr. med.", "family": "univ.", "initials": "M. D. m. u.", "capitalized_force": "MSc Dr. Med. Univ."} {"name": "Ma III, Jack Jr", "given": "Jack", "family": "Ma", "suffix": "III, Jr", "initials": "J. M."} @@ -2548,8 +2556,8 @@ {"name": "Meyer Benno Hans", "order": "FAMILY_FIRST", "given": "Benno", "middle": "Hans", "family": "Meyer", "initials": "B. H. M."} {"name": "Meyer, Benno Hans", "given": "Benno", "middle": "Hans", "family": "Meyer", "initials": "B. H. M."} {"name": "Mgr. Dòmhnall Iain Bàn Mac a’ Ghobhainn Chorùna am post", "title": "Mgr.", "given": "Dòmhnall", "middle": "Iain Bàn", "family": "Mac a’ Ghobhainn Chorùna", "suffix": "am post", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "D. I. B. a. G. C.", "capitalized_force": "Mgr. Dòmhnall Iain Bàn mac A’ Ghobhainn Chorùna AM Post"} -{"name": "Mgr. Ing. Anna Karolína Eva Kristína von Kant Nováková Predná, CSc.", "title": "Mgr. Ing.", "given": "Anna", "middle": "Karolína Eva Kristína", "family": "von Kant Nováková Predná", "suffix": "CSc.", "initials": "A. K. E. K. K. N. P.", "capitalized_force": "Mgr. Ing. Anna Karolína Eva Kristína von Kant Nováková Predná CSC."} -{"name": "Mgr. Ing. von Kant Nováková Predná Anna Karolína Eva Kristína, CSc.", "order": "FAMILY_FIRST", "title": "Mgr. Ing.", "given": "Kant", "middle": "Nováková Predná Anna Karolína Eva Kristína", "family": "von", "suffix": "CSc.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "K. N. P. A. K. E. K. v.", "capitalized_force": "Mgr. Ing. Kant Nováková Predná Anna Karolína Eva Kristína Von CSC."} +{"name": "Mgr. Ing. Anna Karolína Eva Kristína von Kant Nováková Predná, CSc.", "title": "Mgr. Ing.", "given": "Anna", "middle": "Karolína Eva Kristína", "family": "von Kant Nováková Predná", "suffix": "CSc.", "initials": "A. K. E. K. K. N. P.", "capitalized_force": "Mgr. Ing. Anna Karolína Eva Kristína von Kant Nováková Predná, CSC."} +{"name": "Mgr. Ing. von Kant Nováková Predná Anna Karolína Eva Kristína, CSc.", "order": "FAMILY_FIRST", "title": "Mgr. Ing.", "given": "Kant", "middle": "Nováková Predná Anna Karolína Eva Kristína", "family": "von", "suffix": "CSc.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "K. N. P. A. K. E. K. v.", "capitalized_force": "Mgr. Ing. Von Kant Nováková Predná Anna Karolína Eva Kristína, CSC."} {"name": "Michael Wong Kar Ming", "given": "Michael", "middle": "Wong Kar", "family": "Ming", "initials": "M. W. K. M."} {"name": "Miguel García Martínez", "given": "Miguel", "middle": "García", "family": "Martínez", "initials": "M. G. M."} {"name": "Miguel Lanz Duret", "given": "Miguel", "middle": "Lanz", "family": "Duret", "initials": "M. L. D."} @@ -2558,7 +2566,7 @@ {"name": "Miguel d'Escoto", "given": "Miguel", "family": "d'Escoto", "initials": "M. d.", "capitalized_force": "Miguel D'Escoto"} {"name": "Miguel Ángel Félix Gallardo", "given": "Miguel", "middle": "Ángel Félix", "family": "Gallardo", "initials": "M. Á. F. G."} {"name": "Mike van der Velt", "given": "Mike", "family": "van der Velt", "initials": "M. V."} -{"name": "Milenković dr Slađana Vera mlađi, dipl. inž.", "order": "FAMILY_FIRST", "title": "dipl. inž.", "given": "dr", "middle": "Slađana Vera", "family": "Milenković", "suffix": "mlađi", "initials": "d. S. V. M.", "capitalized_force": "Dipl. Inž. Dr Slađana Vera Milenković Mlađi"} +{"name": "Milenković dr Slađana Vera mlađi, dipl. inž.", "order": "FAMILY_FIRST", "title": "dipl. inž.", "given": "dr", "middle": "Slađana Vera", "family": "Milenković", "suffix": "mlađi", "initials": "d. S. V. M.", "capitalized_force": "Dipl. Inž. Milenković Dr Slađana Vera Mlađi"} {"name": "Milenković, Slađana Vera", "given": "Slađana", "middle": "Vera", "family": "Milenković", "initials": "S. V. M."} {"name": "Miler Kete", "order": "FAMILY_FIRST", "given": "Kete", "family": "Miler", "initials": "K. M."} {"name": "Miler, Kete", "given": "Kete", "family": "Miler", "initials": "K. M."} @@ -2702,6 +2710,7 @@ {"name": "Nemesio Camacho Macías", "given": "Nemesio", "middle": "Camacho", "family": "Macías", "initials": "N. C. M.", "capitalized_force": "Nemesio Camacho MacÍas"} {"name": "Ngugi wa Thiong'o", "given": "Ngugi", "middle": "wa", "family": "Thiong'o", "initials": "N. w. T.", "capitalized_force": "Ngugi Wa Thiong'O"} {"name": "Nguyen Thi Van", "given": "Nguyen", "middle": "Thi", "family": "Van", "initials": "N. T. V."} +{"name": "Nguyen Van Anh", "given": "Nguyen", "family": "Van Anh", "initials": "N. A.", "capitalized_force": "Nguyen van Anh"} {"name": "Nguyen Van Lac", "given": "Nguyen", "family": "Van Lac", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "N. L.", "capitalized_force": "Nguyen van Lac"} {"name": "Nguyen Van Vi", "given": "Nguyen", "family": "Van Vi", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (shape)"], "initials": "N. V.", "capitalized_force": "Nguyen van Vi"} {"name": "Nguyen, Thi Van", "given": "Thi", "family": "Van Nguyen", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "T. N.", "capitalized_force": "Thi van Nguyen"} @@ -2751,7 +2760,7 @@ {"name": "Orléans-Longueville, Jean Louis Charles d'", "given": "Jean", "middle": "Louis Charles", "family": "d' Orléans-Longueville", "initials": "J. L. C. O."} {"name": "Orsi, Achille d'", "given": "Achille", "family": "d' Orsi", "initials": "A. O."} {"name": "Ortega y Gasset, Dr.", "title": "Dr.", "given": "Ortega", "middle": "y", "family": "Gasset", "initials": "O. y. G."} -{"name": "Ortega y Gasset, Ed", "given": "Ortega", "middle": "y", "family": "Gasset", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "O. y. G.", "capitalized_force": "Ortega y Gasset ED"} +{"name": "Ortega y Gasset, Ed", "given": "Ortega", "middle": "y", "family": "Gasset", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "O. y. G.", "capitalized_force": "Ortega y Gasset, ED"} {"name": "Orueta y Duarte, Ricardo de", "given": "Ricardo", "family": "de Orueta y Duarte", "initials": "R. O. D."} {"name": "Orval, Pierre d'", "given": "Pierre", "family": "d' Orval", "initials": "P. O."} {"name": "Orville, Johann Friedrich d'", "given": "Johann", "middle": "Friedrich", "family": "d' Orville", "initials": "J. F. O."} @@ -2774,7 +2783,7 @@ {"name": "Paku Alam VIII", "given": "Paku", "family": "Alam", "suffix": "VIII", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "P. A."} {"name": "Pan Nowak Tomasz Jan", "order": "FAMILY_FIRST", "given": "Nowak", "middle": "Tomasz Jan", "family": "Pan", "initials": "N. T. J. P."} {"name": "Pan Tomasz Nowak", "given": "Pan", "middle": "Tomasz", "family": "Nowak", "initials": "P. T. N."} -{"name": "Park Ji-hoon ssi", "order": "FAMILY_FIRST", "given": "Ji-hoon", "middle": "ssi", "family": "Park", "initials": "J. s. P.", "capitalized_force": "Ji-Hoon Ssi Park"} +{"name": "Park Ji-hoon ssi", "order": "FAMILY_FIRST", "given": "Ji-hoon", "middle": "ssi", "family": "Park", "initials": "J. s. P.", "capitalized_force": "Park Ji-Hoon Ssi"} {"name": "Pascual Ortiz Rubio", "given": "Pascual", "middle": "Ortiz", "family": "Rubio", "initials": "P. O. R."} {"name": "Patricia Terrazas Allen", "given": "Patricia", "middle": "Terrazas", "family": "Allen", "initials": "P. T. A."} {"name": "Patricio Flores Sandoval", "given": "Patricio", "middle": "Flores", "family": "Sandoval", "initials": "P. F. S."} @@ -2895,16 +2904,16 @@ {"name": "Prof. Dr. Mary Sue Marie von Miller II, MD DDS", "title": "Prof. Dr.", "given": "Mary", "middle": "Sue Marie", "family": "von Miller", "suffix": "II, MD DDS", "initials": "M. S. M. M."} {"name": "Prof. Dr. María Florencia Martina Cristina von Brühl Jr., MD DDS", "title": "Prof. Dr.", "given": "María", "middle": "Florencia Martina Cristina", "family": "von Brühl", "suffix": "Jr., MD DDS", "initials": "M. F. M. C. B."} {"name": "Prof. Dr. von Bruhl, Ada Cornelia Cesar Martín Jr, M.D., Ph.D.", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Ada", "middle": "Cornelia Cesar Martín", "family": "von Bruhl", "suffix": "Jr, M.D., Ph.D.", "initials": "A. C. C. M. B."} -{"name": "Prof. Dr. von Brühl Ada Cornelia César Martín Jr, MD DDS", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Brühl Ada Cornelia César Martín Von Jr, MD DDS"} -{"name": "Prof. Dr. von Brühl González Domingo Ada Cornelia César Martín, M.D. DDS.", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "González Domingo Ada Cornelia César Martín", "family": "von", "suffix": "M.D. DDS.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Brühl González Domingo Ada Cornelia César Martín Von M.D. DDS."} -{"name": "Prof. Dr. von Brühl María Florencia Martina Cristina Jr., MD DDS", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "María Florencia Martina Cristina", "family": "von", "suffix": "Jr., MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. M. F. M. C. v.", "capitalized_force": "Prof. Dr. Brühl María Florencia Martina Cristina Von Jr., MD DDS"} -{"name": "Prof. Dr. von Brühl Plácido Domingo Ada Cornelia César Martín, MD DDS", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "Plácido Domingo Ada Cornelia César Martín", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Brühl Plácido Domingo Ada Cornelia César Martín Von MD DDS"} +{"name": "Prof. Dr. von Brühl Ada Cornelia César Martín Jr, MD DDS", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Von Brühl Ada Cornelia César Martín Jr, MD DDS"} +{"name": "Prof. Dr. von Brühl González Domingo Ada Cornelia César Martín, M.D. DDS.", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "González Domingo Ada Cornelia César Martín", "family": "von", "suffix": "M.D. DDS.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Von Brühl González Domingo Ada Cornelia César Martín, M.D. DDS."} +{"name": "Prof. Dr. von Brühl María Florencia Martina Cristina Jr., MD DDS", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "María Florencia Martina Cristina", "family": "von", "suffix": "Jr., MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. M. F. M. C. v.", "capitalized_force": "Prof. Dr. Von Brühl María Florencia Martina Cristina Jr., MD DDS"} +{"name": "Prof. Dr. von Brühl Plácido Domingo Ada Cornelia César Martín, MD DDS", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Brühl", "middle": "Plácido Domingo Ada Cornelia César Martín", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Von Brühl Plácido Domingo Ada Cornelia César Martín, MD DDS"} {"name": "Prof. Smith, Dr. John", "title": "Prof. Dr.", "given": "John", "family": "Smith", "initials": "J. S."} {"name": "Prof. Smith, John, PhD", "title": "Prof.", "given": "John", "family": "Smith", "suffix": "PhD", "initials": "J. S."} {"name": "Prof. dr. Cornelia Margarita Sofia Aletta van den Berg jnr., MBChB PhD", "title": "Prof. dr.", "given": "Cornelia", "middle": "Margarita Sofia Aletta", "family": "van den Berg", "suffix": "jnr., MBChB PhD", "initials": "C. M. S. A. B.", "capitalized_force": "Prof. Dr. Cornelia Margarita Sofia Aletta van den Berg Jnr., MBChB PhD"} {"name": "Prof. dr. MD Chirurgie dentară Eva-Eleonora Karl Hans von der Ruhr Jr.", "title": "Prof. dr.", "given": "MD", "middle": "Chirurgie dentară Eva-Eleonora Karl Hans", "family": "von der Ruhr", "suffix": "Jr.", "initials": "M. C. d. E. K. H. R.", "capitalized_force": "Prof. Dr. Md Chirurgie Dentară Eva-Eleonora Karl Hans von der Ruhr Jr."} {"name": "Prof. Ɖr. MƉ Samʊwɛl fan ƉAM Fostɛɛŋ", "title": "Prof. Ɖr.", "given": "MƉ", "middle": "Samʊwɛl fan ƉAM", "family": "Fostɛɛŋ", "initials": "M. S. f. Ɖ. F.", "capitalized_force": "Prof. Ɖr. Mɖ Samʊwɛl Fan Ɖam Fostɛɛŋ"} -{"name": "Prof. Ɖr. MƉ fan ƉAM ƉOMIŊGO Fostɛɛŋ Samʊwɛl", "order": "FAMILY_FIRST", "title": "Prof. Ɖr.", "given": "fan", "middle": "ƉAM ƉOMIŊGO Fostɛɛŋ Samʊwɛl", "family": "MƉ", "initials": "f. Ɖ. Ɖ. F. S. M.", "capitalized_force": "Prof. Ɖr. Fan Ɖam Ɖomiŋgo Fostɛɛŋ Samʊwɛl Mɖ"} +{"name": "Prof. Ɖr. MƉ fan ƉAM ƉOMIŊGO Fostɛɛŋ Samʊwɛl", "order": "FAMILY_FIRST", "title": "Prof. Ɖr.", "given": "fan", "middle": "ƉAM ƉOMIŊGO Fostɛɛŋ Samʊwɛl", "family": "MƉ", "initials": "f. Ɖ. Ɖ. F. S. M.", "capitalized_force": "Prof. Ɖr. Mɖ Fan Ɖam Ɖomiŋgo Fostɛɛŋ Samʊwɛl"} {"name": "Prop. Dr. Ada Cornelia César Martín von Brühl González Domingo MD DDS", "title": "Prop. Dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl González Domingo", "suffix": "MD DDS", "initials": "A. C. C. M. B. G. D."} {"name": "Pèrs, Ciro di", "given": "Ciro", "family": "di Pèrs", "ambiguities": ["PARTICLE_OR_GIVEN", "SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)", "PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "C. P."} {"name": "Pérez Lucía", "order": "FAMILY_FIRST", "given": "Lucía", "family": "Pérez", "initials": "L. P."} @@ -2954,7 +2963,7 @@ {"name": "Rashid Maidin", "given": "Rashid", "family": "Maidin", "initials": "R. M."} {"name": "Rashid, Harun al-", "given": "Harun", "family": "al- Rashid", "initials": "H. R."} {"name": "Razija Mujanović", "given": "Razija", "family": "Mujanović", "initials": "R. M."} -{"name": "Reem Al-Bahrani, CPA", "given": "Reem", "family": "Al-Bahrani", "suffix": "CPA", "initials": "R. A.", "capitalized_force": "Reem al-Bahrani CPA"} +{"name": "Reem Al-Bahrani, CPA", "given": "Reem", "family": "Al-Bahrani", "suffix": "CPA", "initials": "R. A.", "capitalized_force": "Reem al-Bahrani, CPA"} {"name": "Reis, Maria Firmina dos", "given": "Maria", "middle": "Firmina", "family": "dos Reis", "initials": "M. F. R."} {"name": "Remigio Gandásegui y Gorrochátegui", "given": "Remigio", "family": "Gandásegui y Gorrochátegui", "initials": "R. G. G."} {"name": "Renaat van Elslande", "given": "Renaat", "family": "van Elslande", "initials": "R. E."} @@ -2991,7 +3000,7 @@ {"name": "Rodrigo Lara Bonilla", "given": "Rodrigo", "middle": "Lara", "family": "Bonilla", "initials": "R. L. B."} {"name": "Roger Alier i Aixalà", "given": "Roger", "family": "Alier i Aixalà", "initials": "R. A. A."} {"name": "Rogerio Azcárraga Madero", "given": "Rogerio", "middle": "Azcárraga", "family": "Madero", "initials": "R. A. M."} -{"name": "Roig Gal·la", "order": "FAMILY_FIRST", "given": "Gal·la", "family": "Roig", "initials": "G. R.", "capitalized_force": "Gal·La Roig"} +{"name": "Roig Gal·la", "order": "FAMILY_FIRST", "given": "Gal·la", "family": "Roig", "initials": "G. R.", "capitalized_force": "Roig Gal·La"} {"name": "Roig, Gal·la", "given": "Gal·la", "family": "Roig", "initials": "G. R.", "capitalized_force": "Gal·La Roig"} {"name": "Rokas", "given": "Rokas", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "R."} {"name": "Rokas", "order": "FAMILY_FIRST", "family": "Rokas", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "R."} @@ -3036,7 +3045,7 @@ {"name": "SMITH, SAM E.", "given": "SAM", "middle": "E.", "family": "SMITH", "initials": "S. E. S.", "capitalized": "Sam E. Smith"} {"name": "SMITH, VD DE LA MA", "family": "SMITH VD DE LA MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "S. M.", "capitalized": "Smith vd de la Ma"} {"name": "SMITH, VD MA", "family": "SMITH VD MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "S. M.", "capitalized": "Smith vd Ma"} -{"name": "STEVEN HARDMAN, MD, DO, DDS", "given": "STEVEN", "family": "HARDMAN", "suffix": "MD, DO, DDS", "ambiguities": ["COMMA_STRUCTURE"], "initials": "S. H.", "capitalized": "Steven Hardman MD, DO, DDS"} +{"name": "STEVEN HARDMAN, MD, DO, DDS", "given": "STEVEN", "family": "HARDMAN", "suffix": "MD, DO, DDS", "ambiguities": ["COMMA_STRUCTURE"], "initials": "S. H.", "capitalized": "Steven Hardman, MD, DO, DDS"} {"name": "Saad, Habib Pacha es-", "given": "Habib", "middle": "Pacha", "family": "es- Saad", "initials": "H. P. S."} {"name": "Saar Samira Ahmet", "order": "FAMILY_FIRST", "given": "Samira", "middle": "Ahmet", "family": "Saar", "initials": "S. A. S."} {"name": "Sahagún, Bernardino de", "given": "Bernardino", "family": "de Sahagún", "initials": "B. S."} @@ -3097,6 +3106,7 @@ {"name": "Sejal Chaturvedi, CSM", "given": "Sejal", "family": "Chaturvedi", "suffix": "CSM", "initials": "S. C."} {"name": "Selma Björnsdóttir", "given": "Selma", "family": "Björnsdóttir", "initials": "S. B."} {"name": "Senator \"Rick\" Edmonds", "title": "Senator", "family": "Edmonds", "nickname": "Rick", "initials": "E."} +{"name": "Senator Wang Xiaoming", "title": "Senator", "given": "Wang", "family": "Xiaoming", "initials": "W. X."} {"name": "Senior Judge Charles R. Butler, Jr", "title": "Senior Judge", "given": "Charles", "middle": "R.", "family": "Butler", "suffix": "Jr", "initials": "C. R. B."} {"name": "Senior Judge Harold D. Vietor", "title": "Senior Judge", "given": "Harold", "middle": "D.", "family": "Vietor", "initials": "H. D. V."} {"name": "Senior Judge Virgil Pittman", "title": "Senior Judge", "given": "Virgil", "family": "Pittman", "initials": "V. P."} @@ -3138,7 +3148,7 @@ {"name": "Signor Marco Rossi", "title": "Signor", "given": "Marco", "family": "Rossi", "initials": "M. R."} {"name": "Sigríður Hagalín", "given": "Sigríður", "family": "Hagalín", "initials": "S. H."} {"name": "Sigríður Jóna Valgerður Fanndís von Bjarnadóttir", "order": "FAMILY_FIRST", "given": "Jóna", "middle": "Valgerður Fanndís von Bjarnadóttir", "family": "Sigríður", "initials": "J. V. F. B. S."} -{"name": "Sigríður Jóna Valgerður Fanndís von Bjarnadóttir, M.A. í bókmenntafræði", "given": "Sigríður", "middle": "Jóna Valgerður Fanndís", "family": "von Bjarnadóttir", "suffix": "M.A. í bókmenntafræði", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: initial as given (shape)", "SUFFIX_OR_NAME: name as given (position)"], "initials": "S. J. V. F. B.", "capitalized_force": "Sigríður Jóna Valgerður Fanndís von Bjarnadóttir M.A. Í Bókmenntafræði"} +{"name": "Sigríður Jóna Valgerður Fanndís von Bjarnadóttir, M.A. í bókmenntafræði", "given": "Sigríður", "middle": "Jóna Valgerður Fanndís", "family": "von Bjarnadóttir", "suffix": "M.A. í bókmenntafræði", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: initial as given (shape)", "SUFFIX_OR_NAME: name as given (position)"], "initials": "S. J. V. F. B.", "capitalized_force": "Sigríður Jóna Valgerður Fanndís von Bjarnadóttir, M.A. Í Bókmenntafræði"} {"name": "Sigrún Jónsdóttir", "given": "Sigrún", "family": "Jónsdóttir", "initials": "S. J."} {"name": "Sigurdór Sigurdórsson", "given": "Sigurdór", "family": "Sigurdórsson", "initials": "S. S."} {"name": "Sigurjón Birgir Sigurðsson", "given": "Sigurjón", "middle": "Birgir", "family": "Sigurðsson", "initials": "S. B. S."} @@ -3188,7 +3198,7 @@ {"name": "Sita Kumari K.C", "given": "Sita", "middle": "Kumari", "family": "K.C", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (shape)"], "initials": "S. K. K."} {"name": "Siv Friðleifsdóttir", "given": "Siv", "family": "Friðleifsdóttir", "initials": "S. F."} {"name": "Skapti Ólafsson", "given": "Skapti", "family": "Ólafsson", "initials": "S. Ó."} -{"name": "Skeggjason Hr. Geir Jón Magnús Brynjar yngri, þingmaður", "order": "FAMILY_FIRST", "given": "Hr.", "middle": "Geir Jón Magnús Brynjar", "family": "Skeggjason", "suffix": "yngri, þingmaður", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "H. G. J. M. B. S.", "capitalized_force": "Hr. Geir Jón Magnús Brynjar Skeggjason Yngri, Þingmaður"} +{"name": "Skeggjason Hr. Geir Jón Magnús Brynjar yngri, þingmaður", "order": "FAMILY_FIRST", "given": "Hr.", "middle": "Geir Jón Magnús Brynjar", "family": "Skeggjason", "suffix": "yngri, þingmaður", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "H. G. J. M. B. S.", "capitalized_force": "Skeggjason Hr. Geir Jón Magnús Brynjar Yngri, Þingmaður"} {"name": "Slovák Ján Matej", "order": "FAMILY_FIRST", "given": "Ján", "middle": "Matej", "family": "Slovák", "initials": "J. M. S."} {"name": "Slovák, Ján Matej", "given": "Ján", "middle": "Matej", "family": "Slovák", "initials": "J. M. S."} {"name": "Smith", "given": "Smith", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "S."} @@ -3222,11 +3232,11 @@ {"name": "Smith née Jones", "family": "Smith", "maiden": "Jones", "initials": "S."} {"name": "Smith née Jones PhD", "family": "Smith", "suffix": "PhD", "maiden": "Jones", "initials": "S."} {"name": "Smith van der", "given": "Smith", "family": "van der", "initials": "S. v. d.", "capitalized_force": "Smith Van Der"} -{"name": "Smith 김민준씨, XYZ", "given": "Smith", "middle": "김", "family": "민준", "suffix": "씨, XYZ", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "S. 김. 민."} +{"name": "Smith 김민준씨, XYZ", "given": "Smith", "middle": "김", "family": "민준", "suffix": "씨, XYZ", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "S."} {"name": "Smith, A.B.", "given": "A.B.", "family": "Smith", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (shape)"], "initials": "A. S."} {"name": "Smith, A.B.C.", "family": "Smith", "suffix": "A.B.C.", "initials": "S."} {"name": "Smith, A.P.", "given": "A.P.", "family": "Smith", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (shape)"], "initials": "A. S."} -{"name": "Smith, Abd", "family": "Smith", "suffix": "Abd", "initials": "S.", "capitalized_force": "Smith ABD"} +{"name": "Smith, Abd", "family": "Smith", "suffix": "Abd", "initials": "S.", "capitalized_force": "Smith, ABD"} {"name": "Smith, Cecilia Angela", "given": "Cecilia", "middle": "Angela", "family": "Smith", "initials": "C. A. S."} {"name": "Smith, Chancellor of the Exchequer MP", "title": "Chancellor of the Exchequer", "family": "Smith", "suffix": "MP", "initials": "S."} {"name": "Smith, Chas.", "given": "Chas.", "family": "Smith", "initials": "C. S."} @@ -3282,6 +3292,7 @@ {"name": "Smith, John van der Berg Prof.", "title": "Prof.", "given": "John", "middle": "van der Berg", "family": "Smith", "initials": "J. B. S."} {"name": "Smith, John, Bob (MA)", "given": "John", "family": "Smith", "suffix": "Bob MA", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S."} {"name": "Smith, John, Extra, Jr.", "given": "John", "family": "Smith", "suffix": "Extra, Jr.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S."} +{"name": "Smith, John, Jr.", "given": "John", "family": "Smith", "suffix": "Jr.", "initials": "J. S."} {"name": "Smith, John, MD - PhD", "given": "John", "family": "Smith", "suffix": "MD, PhD", "initials": "J. S."} {"name": "Smith, John, MD - née Jones Smith", "given": "John", "family": "Smith", "suffix": "MD, née Jones Smith", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S.", "capitalized_force": "John Smith MD, Née Jones Smith"} {"name": "Smith, John, PhD - and MD", "given": "John", "family": "Smith", "suffix": "PhD, and MD", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S."} @@ -3293,9 +3304,11 @@ {"name": "Smith, John, and", "given": "John", "family": "Smith", "suffix": "and", "ambiguities": ["COMMA_STRUCTURE"], "initials": "J. S."} {"name": "Smith, John; MD", "given": "John;", "family": "Smith", "suffix": "MD", "initials": "J. S."} {"name": "Smith, Jr.", "family": "Smith", "suffix": "Jr.", "initials": "S."} +{"name": "Smith, Jr., John", "family": "Smith", "suffix": "Jr., John", "ambiguities": ["COMMA_STRUCTURE"], "initials": "S."} {"name": "Smith, Jr., PhD", "family": "Smith", "suffix": "Jr., PhD", "initials": "S."} {"name": "Smith, LEED AP", "given": "LEED", "middle": "AP", "family": "Smith", "initials": "L. A. S.", "capitalized_force": "Leed Ap Smith"} {"name": "Smith, MA", "family": "Smith", "suffix": "MA", "initials": "S."} +{"name": "Smith, MD", "family": "Smith", "suffix": "MD", "initials": "S."} {"name": "Smith, MD - PhD - FACS", "family": "Smith", "suffix": "MD - PhD - FACS", "initials": "S."} {"name": "Smith, MD ; PhD", "family": "Smith", "suffix": "MD ; PhD", "initials": "S."} {"name": "Smith, MD PhD", "family": "Smith", "suffix": "MD PhD", "initials": "S."} @@ -3308,7 +3321,7 @@ {"name": "Smith, Ms Jane", "title": "Ms", "given": "Jane", "family": "Smith", "initials": "J. S."} {"name": "Smith, Ms Ma", "title": "Ms", "given": "Ma", "family": "Smith", "initials": "M. S."} {"name": "Smith, Ms RA Ma", "title": "Ms RA", "given": "Ma", "family": "Smith", "initials": "M. S.", "capitalized_force": "Ms Ra Ma Smith"} -{"name": "Smith, Ms.", "family": "Smith", "suffix": "Ms.", "initials": "S.", "capitalized_force": "Smith MS."} +{"name": "Smith, Ms.", "family": "Smith", "suffix": "Ms.", "initials": "S.", "capitalized_force": "Smith, MS."} {"name": "Smith, Ms. Jane", "title": "Ms.", "given": "Jane", "family": "Smith", "initials": "J. S."} {"name": "Smith, PSM I", "family": "Smith", "suffix": "PSM I", "initials": "S."} {"name": "Smith, PSM I.", "family": "Smith", "suffix": "PSM I.", "initials": "S."} @@ -3321,8 +3334,8 @@ {"name": "Smith, Ph.D. Jr.", "family": "Smith", "suffix": "Ph.D. Jr.", "initials": "S."} {"name": "Smith, PhD", "family": "Smith", "suffix": "PhD", "initials": "S."} {"name": "Smith, PhD Jr.", "family": "Smith", "suffix": "PhD Jr.", "initials": "S."} -{"name": "Smith, PhD MEng", "family": "Smith", "suffix": "PhD MEng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "S.", "capitalized_force": "Smith PhD MENG"} -{"name": "Smith, PhD Ma", "family": "Smith", "suffix": "PhD Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "S.", "capitalized_force": "Smith PhD MA"} +{"name": "Smith, PhD MEng", "family": "Smith", "suffix": "PhD MEng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "S.", "capitalized_force": "Smith, PhD MENG"} +{"name": "Smith, PhD Ma", "family": "Smith", "suffix": "PhD Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "S.", "capitalized_force": "Smith, PhD MA"} {"name": "Smith, Pharm D", "given": "Pharm", "middle": "D", "family": "Smith", "initials": "P. D. S."} {"name": "Smith, Prof.", "title": "Prof.", "family": "Smith", "initials": "S."} {"name": "Smith, RA PhD Ma", "title": "RA", "given": "PhD", "middle": "Ma", "family": "Smith", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "P. M. S.", "capitalized_force": "Ra PhD Ma Smith"} @@ -3411,7 +3424,7 @@ {"name": "Sultana Begum", "given": "Sultana", "family": "Begum", "initials": "S. B."} {"name": "Suresh a/l Muthu", "given": "Suresh", "middle": "a/l", "family": "Muthu", "initials": "S. a. M.", "capitalized_force": "Suresh A/L Muthu"} {"name": "Surāqa Ibn-Mirdās al-Aṣġar", "given": "Surāqa", "middle": "Ibn-Mirdās", "family": "al-Aṣġar", "initials": "S. I. a.", "capitalized_force": "Surāqa ibn-Mirdās al-Aṣġar"} -{"name": "Suzuki san", "order": "FAMILY_FIRST", "given": "san", "family": "Suzuki", "initials": "s. S.", "capitalized_force": "San Suzuki"} +{"name": "Suzuki san", "order": "FAMILY_FIRST", "given": "san", "family": "Suzuki", "initials": "s. S.", "capitalized_force": "Suzuki San"} {"name": "Suzuki, Shōsan", "given": "Shōsan", "family": "Suzuki", "initials": "S. S."} {"name": "Suzuki-san", "order": "FAMILY_FIRST", "family": "Suzuki-san", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "S."} {"name": "Svarun", "given": "Svarun", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "S."} @@ -3429,7 +3442,7 @@ {"name": "Syukri @ Shu Qi Mohd Nor", "given": "Syukri", "middle": "@ Shu Qi Mohd", "family": "Nor", "initials": "S. @. S. Q. M. N."} {"name": "Szabados Máté Bendegúz", "order": "FAMILY_FIRST", "given": "Máté", "middle": "Bendegúz", "family": "Szabados", "initials": "M. B. S."} {"name": "Szabados, Máté Bendegúz", "given": "Máté", "middle": "Bendegúz", "family": "Szabados", "initials": "M. B. S."} -{"name": "Szabó Péter úr", "order": "FAMILY_FIRST", "given": "Péter", "middle": "úr", "family": "Szabó", "initials": "P. ú. S.", "capitalized_force": "Péter Úr Szabó"} +{"name": "Szabó Péter úr", "order": "FAMILY_FIRST", "given": "Péter", "middle": "úr", "family": "Szabó", "initials": "P. ú. S.", "capitalized_force": "Szabó Péter Úr"} {"name": "Szabó Péterné", "order": "FAMILY_FIRST", "given": "Péterné", "family": "Szabó", "initials": "P. S."} {"name": "Szabóné Kiss Éva", "order": "FAMILY_FIRST", "given": "Kiss", "middle": "Éva", "family": "Szabóné", "initials": "K. É. S."} {"name": "Szigeti, Joseph", "given": "Joseph", "family": "Szigeti", "initials": "J. S."} @@ -3444,7 +3457,7 @@ {"name": "Tahir Jalaluddin", "given": "Tahir", "family": "Jalaluddin", "initials": "T. J."} {"name": "Takamatsu, Jirō", "given": "Jirō", "family": "Takamatsu", "initials": "J. T."} {"name": "Takeyama, Michio", "given": "Michio", "family": "Takeyama", "initials": "M. T."} -{"name": "Tammik hr Mari-Ann Henri Roobert parlamendiliige", "order": "FAMILY_FIRST", "given": "hr", "middle": "Mari-Ann Henri Roobert parlamendiliige", "family": "Tammik", "initials": "h. M. H. R. p. T.", "capitalized_force": "Hr Mari-Ann Henri Roobert Parlamendiliige Tammik"} +{"name": "Tammik hr Mari-Ann Henri Roobert parlamendiliige", "order": "FAMILY_FIRST", "given": "hr", "middle": "Mari-Ann Henri Roobert parlamendiliige", "family": "Tammik", "initials": "h. M. H. R. p. T.", "capitalized_force": "Tammik Hr Mari-Ann Henri Roobert Parlamendiliige"} {"name": "Tammik, Mari-Ann Henri Roobert, parlamendiliige", "given": "Mari-Ann", "middle": "Henri Roobert", "family": "Tammik", "suffix": "parlamendiliige", "ambiguities": ["COMMA_STRUCTURE"], "initials": "M. H. R. T.", "capitalized_force": "Mari-Ann Henri Roobert Tammik Parlamendiliige"} {"name": "Taufīq al-Ḥakīm", "given": "Taufīq", "family": "al-Ḥakīm", "initials": "T. a."} {"name": "Te Awanui-a-Rangi Black", "given": "Te", "middle": "Awanui-a-Rangi", "family": "Black", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "T. A. B.", "capitalized_force": "Te Awanui-A-Rangi Black"} @@ -3501,7 +3514,7 @@ {"name": "UNILEVER LTD", "given": "UNILEVER", "family": "LTD", "initials": "U. L.", "capitalized": "Unilever Ltd"} {"name": "US Magistrate Judge T Michael Putnam", "title": "US Magistrate Judge", "given": "T", "middle": "Michael", "family": "Putnam", "initials": "T. M. P.", "capitalized_force": "Us Magistrate Judge T Michael Putnam"} {"name": "US Magistrate-Judge Elizabeth E Campbell", "title": "US Magistrate-Judge", "given": "Elizabeth", "middle": "E", "family": "Campbell", "initials": "E. E. C.", "capitalized_force": "Us Magistrate-Judge Elizabeth E Campbell"} -{"name": "Uddin, Md Karim", "family": "Uddin", "suffix": "Md Karim", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "U.", "capitalized_force": "Uddin MD Karim"} +{"name": "Uddin, Md Karim", "family": "Uddin", "suffix": "Md Karim", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "U.", "capitalized_force": "Uddin, MD Karim"} {"name": "Uddin, Mr Md Karim", "title": "Mr", "family": "Uddin", "suffix": "Md Karim", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "U.", "capitalized_force": "Mr Uddin MD Karim"} {"name": "Ueshiba, Morihei", "given": "Morihei", "family": "Ueshiba", "initials": "M. U."} {"name": "Uexküll, Jakob von", "given": "Jakob", "family": "von Uexküll", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "J. U."} @@ -3540,7 +3553,7 @@ {"name": "Van Maximilian Carlson", "given": "Van", "middle": "Maximilian", "family": "Carlson", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "V. M. C."} {"name": "Van Nguyen", "given": "Van", "family": "Nguyen", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "V. N."} {"name": "Van Rooten, Luis", "given": "Luis", "family": "Van Rooten", "initials": "L. R.", "capitalized_force": "Luis van Rooten"} -{"name": "Van der Merwe Jan Koos", "order": "FAMILY_FIRST", "given": "der Merwe Jan Koos", "family": "Van", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. M. J. K. V.", "capitalized_force": "Der Merwe Jan Koos Van"} +{"name": "Van der Merwe Jan Koos", "order": "FAMILY_FIRST", "given": "der Merwe Jan Koos", "family": "Van", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. M. J. K. V.", "capitalized_force": "Van Der Merwe Jan Koos"} {"name": "Van der Merwe, Jan Koos", "given": "Jan", "middle": "Koos", "family": "Van der Merwe", "initials": "J. K. M.", "capitalized_force": "Jan Koos van der Merwe"} {"name": "Van der Walt", "given": "Van", "family": "der Walt", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "V. W."} {"name": "Varano, Costanza da", "given": "Costanza", "family": "da Varano", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "C. V."} @@ -3591,9 +3604,10 @@ {"name": "Wallin Johan Harald", "order": "FAMILY_FIRST", "given": "Johan", "middle": "Harald", "family": "Wallin", "initials": "J. H. W."} {"name": "Wallin, Johan Harald", "order": "FAMILY_FIRST", "given": "Johan", "middle": "Harald", "family": "Wallin", "initials": "J. H. W."} {"name": "Walter Leschetizky", "given": "Walter", "family": "Leschetizky", "initials": "W. L."} -{"name": "Waly Mari shu Halimatu", "order": "FAMILY_FIRST", "given": "Mari", "middle": "shu Halimatu", "family": "Waly", "initials": "M. s. H. W.", "capitalized_force": "Mari Shu Halimatu Waly"} +{"name": "Waly Mari shu Halimatu", "order": "FAMILY_FIRST", "given": "Mari", "middle": "shu Halimatu", "family": "Waly", "initials": "M. s. H. W.", "capitalized_force": "Waly Mari Shu Halimatu"} {"name": "Wang M.Eng.", "given": "Wang", "suffix": "M.Eng.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "W.", "capitalized_force": "Wang M.ENG."} {"name": "Wang Ma PhD", "given": "Wang", "family": "Ma", "suffix": "PhD", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "W. M."} +{"name": "Wang Xiaoming, Jr.", "given": "Wang", "family": "Xiaoming", "suffix": "Jr.", "initials": "W. X."} {"name": "Wang, Si", "given": "Si", "family": "Wang", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "S. W."} {"name": "Wang, Zhaojun", "given": "Zhaojun", "family": "Wang", "initials": "Z. W."} {"name": "Wanjiru wa Kamau", "given": "Wanjiru", "middle": "wa", "family": "Kamau", "initials": "W. w. K.", "capitalized_force": "Wanjiru Wa Kamau"} @@ -3647,7 +3661,7 @@ {"name": "Wolf, Inger Marie Adele Synnøve von", "given": "Inger", "middle": "Marie Adele Synnøve", "family": "von Wolf", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "I. M. A. S. W."} {"name": "Wolfgang Amadeus Mozart", "given": "Wolfgang", "middle": "Amadeus", "family": "Mozart", "initials": "W. A. M."} {"name": "Wooster Bertram Wilberforce Henry Robert", "order": "FAMILY_FIRST", "given": "Bertram", "middle": "Wilberforce Henry Robert", "family": "Wooster", "initials": "B. W. H. R. W."} -{"name": "Wooster Bertram Wilberforce Henry Robert AS", "order": "FAMILY_FIRST", "given": "Bertram", "middle": "Wilberforce Henry Robert AS", "family": "Wooster", "initials": "B. W. H. R. A. W.", "capitalized_force": "Bertram Wilberforce Henry Robert As Wooster"} +{"name": "Wooster Bertram Wilberforce Henry Robert AS", "order": "FAMILY_FIRST", "given": "Bertram", "middle": "Wilberforce Henry Robert AS", "family": "Wooster", "initials": "B. W. H. R. A. W.", "capitalized_force": "Wooster Bertram Wilberforce Henry Robert As"} {"name": "Wooster Bertram Wilberforce Henry Robert MP", "order": "FAMILY_FIRST", "given": "Bertram", "middle": "Wilberforce Henry Robert", "family": "Wooster", "suffix": "MP", "initials": "B. W. H. R. W."} {"name": "Wooster Mr. Bertram Wilberforce Henry Robert Jr, MP", "order": "FAMILY_FIRST", "given": "Mr.", "middle": "Bertram Wilberforce Henry Robert", "family": "Wooster", "suffix": "Jr, MP", "initials": "M. B. W. H. R. W."} {"name": "Wooster Mudane Bertram Wilberforce Henry Robert Jr, MP", "order": "FAMILY_FIRST", "given": "Mudane", "middle": "Bertram Wilberforce Henry Robert", "family": "Wooster", "suffix": "Jr, MP", "initials": "M. B. W. H. R. W."} @@ -3727,7 +3741,7 @@ {"name": "abdul Jr Smith Berg", "given": "abdul", "middle": "Jr Smith", "family": "Berg", "initials": "a. J. S. B.", "capitalized_force": "Abdul Jr Smith Berg"} {"name": "abdul Ma Smith", "given": "abdul Ma", "family": "Smith", "initials": "a. M. S.", "capitalized_force": "Abdul Ma Smith"} {"name": "abdul Ph. D. Smith Berg", "given": "abdul", "middle": "Smith", "family": "Berg", "suffix": "Ph. D.", "initials": "a. S. B.", "capitalized_force": "Abdul Smith Berg Ph. D."} -{"name": "abdul Salam, Ed", "given": "abdul", "family": "Salam", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "a. S.", "capitalized_force": "Abdul Salam ED"} +{"name": "abdul Salam, Ed", "given": "abdul", "family": "Salam", "suffix": "Ed", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "a. S.", "capitalized_force": "Abdul Salam, ED"} {"name": "abdul Sir Smith Berg", "given": "abdul Sir", "middle": "Smith", "family": "Berg", "initials": "a. S. S. B.", "capitalized_force": "Abdul Sir Smith Berg"} {"name": "abdul Smith Berg Ma", "given": "abdul Smith", "middle": "Berg", "family": "Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "a. S. B. M.", "capitalized_force": "Abdul Smith Berg Ma"} {"name": "abdul Smith Jr Ma", "given": "abdul", "family": "Smith", "suffix": "Jr Ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (declared)"], "initials": "a. S.", "capitalized_force": "Abdul Smith Jr MA"} @@ -3748,18 +3762,18 @@ {"name": "and van Buren", "given": "and van", "family": "Buren", "initials": "a. v. B.", "capitalized_force": "and Van Buren"} {"name": "anh van do", "given": "anh", "family": "van do", "initials": "a. v. d.", "capitalized": "Anh Van Do"} {"name": "anh van mc", "given": "anh", "family": "van mc", "initials": "a. v. m.", "capitalized": "Anh Van Mc"} -{"name": "bin Stromae Elizabeth Windsor Maria Teresa MP", "order": "FAMILY_FIRST", "given": "Stromae", "middle": "Elizabeth Windsor Maria Teresa", "family": "bin", "suffix": "MP", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "S. E. W. M. T. b.", "capitalized_force": "Stromae Elizabeth Windsor Maria Teresa Bin MP"} +{"name": "bin Stromae Elizabeth Windsor Maria Teresa MP", "order": "FAMILY_FIRST", "given": "Stromae", "middle": "Elizabeth Windsor Maria Teresa", "family": "bin", "suffix": "MP", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "S. E. W. M. T. b.", "capitalized_force": "Bin Stromae Elizabeth Windsor Maria Teresa MP"} {"name": "bin Stromae, Elizabeth Windsor Maria Teresa MP", "given": "Elizabeth", "middle": "Windsor Maria Teresa", "family": "bin Stromae", "suffix": "MP", "initials": "E. W. M. T. S."} {"name": "bob v. de la macdole-eisenhower phd", "given": "bob", "middle": "v.", "family": "de la macdole-eisenhower", "suffix": "phd", "initials": "b. v. m.", "capitalized": "Bob V. de la MacDole-Eisenhower PhD"} {"name": "carod i", "given": "carod", "family": "i", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "c. i.", "capitalized": "Carod I"} -{"name": "da Silva Sr. José Pedro Eduardo Jr., MP", "order": "FAMILY_FIRST", "given": "Silva", "middle": "Sr. José Pedro Eduardo", "family": "da", "suffix": "Jr., MP", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "S. S. J. P. E. d.", "capitalized_force": "Silva Sr. José Pedro Eduardo Da Jr., MP"} +{"name": "da Silva Sr. José Pedro Eduardo Jr., MP", "order": "FAMILY_FIRST", "given": "Silva", "middle": "Sr. José Pedro Eduardo", "family": "da", "suffix": "Jr., MP", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "S. S. J. P. E. d.", "capitalized_force": "Da Silva Sr. José Pedro Eduardo Jr., MP"} {"name": "da Silva do Amaral de Souza, Miguel", "given": "Miguel", "family": "da Silva do Amaral de Souza", "initials": "M. S. A. S."} {"name": "de", "given": "de", "initials": "d.", "capitalized": "De"} {"name": "de Anke van y", "family": "de Anke van y", "initials": "A."} -{"name": "de Bhulbh An tOll. An Dr. Brigid Aoibhe Sophia", "order": "FAMILY_FIRST", "given": "An", "middle": "tOll. An Dr. Brigid Aoibhe Sophia", "family": "de Bhulbh", "initials": "A. t. A. D. B. A. S. B.", "capitalized_force": "An Toll. An Dr. Brigid Aoibhe Sophia de Bhulbh"} +{"name": "de Bhulbh An tOll. An Dr. Brigid Aoibhe Sophia", "order": "FAMILY_FIRST", "given": "An", "middle": "tOll. An Dr. Brigid Aoibhe Sophia", "family": "de Bhulbh", "initials": "A. t. A. D. B. A. S. B.", "capitalized_force": "de Bhulbh An Toll. An Dr. Brigid Aoibhe Sophia"} {"name": "de Bhulbh Brigid Aoibhe Sophia", "order": "FAMILY_FIRST", "given": "Brigid", "middle": "Aoibhe Sophia", "family": "de Bhulbh", "initials": "B. A. S. B."} {"name": "de Castro Xosé Carlos Francisco Xavier", "order": "FAMILY_FIRST", "given": "Xosé", "middle": "Carlos Francisco Xavier", "family": "de Castro", "initials": "X. C. F. X. C."} -{"name": "de Jong dhr. Bertus Wevers Harry Robert jr., mp", "order": "FAMILY_FIRST", "given": "dhr.", "middle": "Bertus Wevers Harry Robert", "family": "de Jong", "suffix": "jr., mp", "initials": "d. B. W. H. R. J.", "capitalized_force": "Dhr. Bertus Wevers Harry Robert de Jong Jr., MP"} +{"name": "de Jong dhr. Bertus Wevers Harry Robert jr., mp", "order": "FAMILY_FIRST", "given": "dhr.", "middle": "Bertus Wevers Harry Robert", "family": "de Jong", "suffix": "jr., mp", "initials": "d. B. W. H. R. J.", "capitalized_force": "de Jong Dhr. Bertus Wevers Harry Robert Jr., MP"} {"name": "de Lacon, Antoni Baìngiu Torchitòriu Comita", "given": "Antoni", "middle": "Baìngiu Torchitòriu Comita", "family": "de Lacon", "initials": "A. B. T. C. L."} {"name": "de Mesnil", "family": "de Mesnil", "initials": "M."} {"name": "de Mesnil Garcia", "family": "de Mesnil Garcia", "initials": "M. G."} @@ -3814,12 +3828,12 @@ {"name": "dr Vincent James van Gogh dr", "title": "dr", "given": "Vincent", "middle": "James", "family": "van Gogh dr", "initials": "V. J. G. d.", "capitalized_force": "Dr Vincent James van Gogh Dr"} {"name": "dr Vincent van Gogh dr", "title": "dr", "given": "Vincent", "family": "van Gogh dr", "initials": "V. G. d.", "capitalized_force": "Dr Vincent van Gogh Dr"} {"name": "dr Vincent van der Gogh dr", "title": "dr", "given": "Vincent", "family": "van der Gogh dr", "initials": "V. G. d.", "capitalized_force": "Dr Vincent van der Gogh Dr"} -{"name": "dr. Anastasia Eleni César Martín von Brühl, cand.odont.", "title": "dr.", "given": "Anastasia", "middle": "Eleni César Martín", "family": "von Brühl", "suffix": "cand.odont.", "initials": "A. E. C. M. B.", "capitalized_force": "Dr. Anastasia Eleni César Martín von Brühl CAND.ODONT."} +{"name": "dr. Anastasia Eleni César Martín von Brühl, cand.odont.", "title": "dr.", "given": "Anastasia", "middle": "Eleni César Martín", "family": "von Brühl", "suffix": "cand.odont.", "initials": "A. E. C. M. B.", "capitalized_force": "Dr. Anastasia Eleni César Martín von Brühl, CAND.ODONT."} {"name": "dr. Hejba-Marja Hana Lejnikowa jr. phd", "title": "dr.", "given": "Hejba-Marja", "middle": "Hana", "family": "Lejnikowa", "suffix": "jr. phd", "initials": "H. H. L.", "capitalized_force": "Dr. Hejba-Marja Hana Lejnikowa Jr. PhD"} {"name": "dr. Jěwa-Marja Hańža Wićazowa jr. phd", "title": "dr.", "given": "Jěwa-Marja", "middle": "Hańža", "family": "Wićazowa", "suffix": "jr. phd", "initials": "J. H. W.", "capitalized_force": "Dr. Jěwa-Marja Hańža Wićazowa Jr. PhD"} {"name": "dr. Margaritta Marionna Maria de Planta jr. CF", "title": "dr.", "given": "Margaritta", "middle": "Marionna Maria", "family": "de Planta", "suffix": "jr. CF", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "M. M. M. P.", "capitalized_force": "Dr. Margaritta Marionna Maria de Planta Jr. Cf"} {"name": "dr. ben alex johnson III", "title": "dr.", "given": "ben", "middle": "alex", "family": "johnson", "suffix": "III", "initials": "b. a. j.", "capitalized": "Dr. Ben Alex Johnson III"} -{"name": "dr. john p. doe-Ray, CLU, CFP, LUTC", "title": "dr.", "given": "john", "middle": "p.", "family": "doe-Ray", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "j. p. d.", "capitalized_force": "Dr. John P. Doe-Ray CLU, CFP, Lutc"} +{"name": "dr. john p. doe-Ray, CLU, CFP, LUTC", "title": "dr.", "given": "john", "middle": "p.", "family": "doe-Ray", "suffix": "CLU, CFP, LUTC", "ambiguities": ["COMMA_STRUCTURE"], "initials": "j. p. d.", "capitalized_force": "Dr. John P. Doe-Ray, CLU, CFP, Lutc"} {"name": "dr. juan de la vega jr.", "title": "dr.", "given": "juan", "family": "de la vega", "suffix": "jr.", "initials": "j. v.", "capitalized": "Dr. Juan de la Vega Jr."} {"name": "dr. juan garcia III", "title": "dr.", "given": "juan", "family": "garcia", "suffix": "III", "initials": "j. g.", "capitalized": "Dr. Juan Garcia III"} {"name": "dr. née juan y lopez", "title": "dr.", "given": "née", "middle": "juan y", "family": "lopez", "initials": "n. j. y. l.", "capitalized": "Dr. Née Juan Y Lopez"} @@ -3828,13 +3842,13 @@ {"name": "e and e", "given": "e and e", "ambiguities": ["CONJUNCTION_OR_INITIAL"], "initials": "e. e.", "capitalized": "E and E"} {"name": "e j smith", "given": "e", "middle": "j", "family": "smith", "ambiguities": ["CONJUNCTION_OR_INITIAL"], "initials": "e. j. s.", "capitalized": "E J Smith"} {"name": "émile zola", "given": "émile", "family": "zola", "initials": "é. z.", "capitalized": "Émile Zola"} -{"name": "fan ƉAM Fostɛɛŋ Samʊwɛl", "order": "FAMILY_FIRST", "given": "ƉAM", "middle": "Fostɛɛŋ Samʊwɛl", "family": "fan", "initials": "Ɖ. F. S. f.", "capitalized_force": "Ɖam Fostɛɛŋ Samʊwɛl Fan"} +{"name": "fan ƉAM Fostɛɛŋ Samʊwɛl", "order": "FAMILY_FIRST", "given": "ƉAM", "middle": "Fostɛɛŋ Samʊwɛl", "family": "fan", "initials": "Ɖ. F. S. f.", "capitalized_force": "Fan Ɖam Fostɛɛŋ Samʊwɛl"} {"name": "fon Brül Ada Kornelia Sezar Martin, hirurg-stomatolog lukman", "order": "FAMILY_FIRST", "given": "hirurg-stomatolog", "middle": "lukman", "family": "fon Brül Ada Kornelia Sezar Martin", "initials": "h. l. f. B. A. K. S. M.", "capitalized_force": "Hirurg-Stomatolog Lukman Fon Brül Ada Kornelia Sezar Martin"} {"name": "g. Adnan Mirza Hodžić zastupnik u parlamentu", "given": "g.", "middle": "Adnan Mirza Hodžić zastupnik u", "family": "parlamentu", "initials": "g. A. M. H. z. u. p.", "capitalized_force": "G. Adnan Mirza Hodžić Zastupnik U Parlamentu"} {"name": "g. Hodžić Adnan Mirza, zastupnik u parlamentu", "given": "zastupnik", "middle": "u parlamentu", "family": "g. Hodžić Adnan Mirza", "initials": "z. u. p. g. H. A. M.", "capitalized_force": "Zastupnik U Parlamentu G. Hodžić Adnan Mirza"} {"name": "g. Hodžić Adnan Mirza, zastupnik u parlamentu", "order": "FAMILY_FIRST", "given": "zastupnik", "middle": "u parlamentu", "family": "g. Hodžić Adnan Mirza", "initials": "z. u. p. g. H. A. M.", "capitalized_force": "Zastupnik U Parlamentu G. Hodžić Adnan Mirza"} {"name": "g. Janez Peter Novak ml., univ. dipl. inž.", "title": "univ. dipl. inž.", "given": "g.", "middle": "Janez Peter Novak", "family": "ml.", "initials": "g. J. P. N. m.", "capitalized_force": "Univ. Dipl. Inž. G. Janez Peter Novak Ml."} -{"name": "g. Novak Janez Peter, univ. dipl. inž.", "order": "FAMILY_FIRST", "title": "univ. dipl. inž.", "given": "Novak", "middle": "Janez Peter", "family": "g.", "initials": "N. J. P. g.", "capitalized_force": "Univ. Dipl. Inž. Novak Janez Peter G."} +{"name": "g. Novak Janez Peter, univ. dipl. inž.", "order": "FAMILY_FIRST", "title": "univ. dipl. inž.", "given": "Novak", "middle": "Janez Peter", "family": "g.", "initials": "N. J. P. g.", "capitalized_force": "Univ. Dipl. Inž. G. Novak Janez Peter"} {"name": "hr. Hans Henrik Sven Åge Møller, MF", "title": "hr.", "given": "MF", "family": "Hans Henrik Sven Åge Møller", "initials": "M. H. H. S. Å. M.", "capitalized_force": "Hr. Mf Hans Henrik Sven Åge Møller"} {"name": "ibn Awf abdul Rahman", "family": "ibn Awf abdul Rahman", "initials": "A. a. R.", "capitalized_force": "ibn Awf Abdul Rahman"} {"name": "ina binti navalamar", "given": "ina", "family": "binti navalamar", "initials": "i. n.", "capitalized": "Ina binti Navalamar"} @@ -3853,7 +3867,7 @@ {"name": "john doe", "given": "john", "family": "doe", "initials": "j. d.", "capitalized": "John Doe"} {"name": "john doe q.c.", "given": "john", "family": "doe", "suffix": "q.c.", "initials": "j. d.", "capitalized": "John Doe Q.C."} {"name": "john e jones", "given": "john", "middle": "e", "family": "jones", "ambiguities": ["CONJUNCTION_OR_INITIAL"], "alternatives": ["CONJUNCTION_OR_INITIAL: conjunction as middle (vocabulary)"], "initials": "j. e. j.", "capitalized": "John E Jones"} -{"name": "john e jones, III", "given": "john", "middle": "e", "family": "jones", "suffix": "III", "initials": "j. e. j.", "capitalized": "John e Jones III"} +{"name": "john e jones, III", "given": "john", "middle": "e", "family": "jones", "suffix": "III", "initials": "j. e. j.", "capitalized": "John e Jones, III"} {"name": "john e smith", "given": "john", "middle": "e", "family": "smith", "ambiguities": ["CONJUNCTION_OR_INITIAL"], "alternatives": ["CONJUNCTION_OR_INITIAL: conjunction as middle (vocabulary)"], "initials": "j. e. s.", "capitalized": "John E Smith"} {"name": "john e. smith", "given": "john", "middle": "e.", "family": "smith", "initials": "j. e. s.", "capitalized": "John E. Smith"} {"name": "john i", "given": "john", "family": "i", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "j. i.", "capitalized": "John I"} @@ -3891,13 +3905,13 @@ {"name": "john smith vi", "given": "john", "family": "smith", "suffix": "vi", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "j. s.", "capitalized": "John Smith VI"} {"name": "john smith x.y.z.", "given": "john", "family": "smith", "suffix": "x.y.z.", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (position)"], "initials": "j. s.", "capitalized": "John Smith X.Y.Z."} {"name": "john smith xi", "given": "john", "middle": "smith", "family": "xi", "initials": "j. s. x.", "capitalized": "John Smith Xi"} -{"name": "john smith, PHARM D", "given": "john", "family": "smith", "suffix": "PHARM D", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "j. s.", "capitalized": "John Smith Pharm D"} -{"name": "john smith, ma", "given": "john", "family": "smith", "suffix": "ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "j. s.", "capitalized": "John Smith MA"} -{"name": "john smith, md ma", "given": "john", "family": "smith", "suffix": "md ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "j. s.", "capitalized": "John Smith MD MA"} -{"name": "john smith, ms-pt", "given": "john", "family": "smith", "suffix": "ms-pt", "initials": "j. s.", "capitalized": "John Smith MS-PT"} -{"name": "john smith, otr/l", "given": "john", "family": "smith", "suffix": "otr/l", "initials": "j. s.", "capitalized": "John Smith OTR/L"} -{"name": "john smith, phd meng", "given": "john", "family": "smith", "suffix": "phd meng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "j. s.", "capitalized": "John Smith PhD MENG"} -{"name": "john smith, v", "given": "john", "family": "smith", "suffix": "v", "initials": "j. s.", "capitalized": "John Smith V"} +{"name": "john smith, PHARM D", "given": "john", "family": "smith", "suffix": "PHARM D", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "j. s.", "capitalized": "John Smith, Pharm D"} +{"name": "john smith, ma", "given": "john", "family": "smith", "suffix": "ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "j. s.", "capitalized": "John Smith, MA"} +{"name": "john smith, md ma", "given": "john", "family": "smith", "suffix": "md ma", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "j. s.", "capitalized": "John Smith, MD MA"} +{"name": "john smith, ms-pt", "given": "john", "family": "smith", "suffix": "ms-pt", "initials": "j. s.", "capitalized": "John Smith, MS-PT"} +{"name": "john smith, otr/l", "given": "john", "family": "smith", "suffix": "otr/l", "initials": "j. s.", "capitalized": "John Smith, OTR/L"} +{"name": "john smith, phd meng", "given": "john", "family": "smith", "suffix": "phd meng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "j. s.", "capitalized": "John Smith, PhD MENG"} +{"name": "john smith, v", "given": "john", "family": "smith", "suffix": "v", "initials": "j. s.", "capitalized": "John Smith, V"} {"name": "john smith, vi", "given": "vi", "family": "john smith", "initials": "v. j. s.", "capitalized": "Vi John Smith"} {"name": "john smith-jones", "given": "john", "family": "smith-jones", "initials": "j. s.", "capitalized": "John Smith-Jones"} {"name": "john v", "given": "john", "family": "v", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "j. v.", "capitalized": "John V"} @@ -3924,12 +3938,12 @@ {"name": "juan y garcia", "given": "juan", "middle": "y", "family": "garcia", "initials": "j. y. g.", "capitalized": "Juan y Garcia"} {"name": "juan y-garcia", "given": "juan", "family": "y-garcia", "initials": "j. y.", "capitalized": "Juan Y-Garcia"} {"name": "juan y-garcia-lopez", "given": "juan", "family": "y-garcia-lopez", "initials": "j. y.", "capitalized": "Juan Y-Garcia-Lopez"} -{"name": "kim, ae-ra", "family": "kim", "suffix": "ae-ra", "initials": "k.", "capitalized": "Kim AE-RA"} +{"name": "kim, ae-ra", "family": "kim", "suffix": "ae-ra", "initials": "k.", "capitalized": "Kim, AE-RA"} {"name": "larry james edward johnson v", "given": "larry", "middle": "james edward", "family": "johnson", "suffix": "v", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: initial as family (shape)"], "initials": "l. j. e. j.", "capitalized": "Larry James Edward Johnson V"} {"name": "lt. gen. john a. kenneth doe iv", "title": "lt. gen.", "given": "john", "middle": "a. kenneth", "family": "doe", "suffix": "iv", "initials": "j. a. k. d.", "capitalized": "Lt. Gen. John A. Kenneth Doe IV"} {"name": "lt.gov john doe", "title": "lt.gov", "given": "john", "family": "doe", "initials": "j. d.", "capitalized": "Lt.Gov John Doe"} {"name": "m.d ph.d. Inger Marie Adele Synnøve von Wolf jr.", "given": "m.d", "middle": "ph.d. Inger Marie Adele Synnøve", "family": "von Wolf", "suffix": "jr.", "initials": "m. p. I. M. A. S. W.", "capitalized_force": "M.D Ph.D. Inger Marie Adele Synnøve von Wolf Jr."} -{"name": "m.d ph.d. von Wolf Inger Marie Adele Synnøve", "order": "FAMILY_FIRST", "given": "ph.d.", "middle": "von Wolf Inger Marie Adele Synnøve", "family": "m.d", "initials": "p. W. I. M. A. S. m.", "capitalized_force": "Ph.D. von Wolf Inger Marie Adele Synnøve M.D"} +{"name": "m.d ph.d. von Wolf Inger Marie Adele Synnøve", "order": "FAMILY_FIRST", "given": "ph.d.", "middle": "von Wolf Inger Marie Adele Synnøve", "family": "m.d", "initials": "p. W. I. M. A. S. m.", "capitalized_force": "M.D Ph.D. von Wolf Inger Marie Adele Synnøve"} {"name": "m.ʿali smith", "given": "m.ʿali", "family": "smith", "initials": "m. s.", "capitalized": "M.ʿAli Smith"} {"name": "mack johnson", "given": "mack", "family": "johnson", "initials": "m. j.", "capitalized": "Mack Johnson"} {"name": "maria da-silva", "given": "maria", "family": "da-silva", "initials": "m. d.", "capitalized": "Maria da-Silva"} @@ -3941,37 +3955,37 @@ {"name": "mevrouw Ada Cornelia César Martín von Brühl jr. PhD", "title": "mevrouw", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl", "suffix": "jr. PhD", "initials": "A. C. C. M. B.", "capitalized_force": "Mevrouw Ada Cornelia César Martín von Brühl Jr. PhD"} {"name": "mnr. Bertus Wilbers Henri Retief Willemse jnr., LP", "title": "mnr.", "given": "Bertus", "middle": "Wilbers Henri Retief", "family": "Willemse", "suffix": "jnr., LP", "initials": "B. W. H. R. W.", "capitalized_force": "Mnr. Bertus Wilbers Henri Retief Willemse Jnr., LP"} {"name": "mohamad ali smith", "given": "mohamad", "middle": "ali", "family": "smith", "initials": "m. a. s.", "capitalized": "Mohamad Ali Smith"} -{"name": "mwana Hamisi Salima Farida M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "Hamisi", "middle": "Salima Farida", "family": "mwana", "suffix": "M.D. Ph.D.", "initials": "H. S. F. m.", "capitalized_force": "Hamisi Salima Farida Mwana M.D. Ph.D."} +{"name": "mwana Hamisi Salima Farida M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "Hamisi", "middle": "Salima Farida", "family": "mwana", "suffix": "M.D. Ph.D.", "initials": "H. S. F. m.", "capitalized_force": "Mwana Hamisi Salima Farida M.D. Ph.D."} {"name": "nguyen van lac", "given": "nguyen", "family": "van", "suffix": "lac", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as family (declared)"], "initials": "n. v.", "capitalized": "Nguyen Van LAC"} {"name": "née Jones", "given": "née", "family": "Jones", "initials": "n. J.", "capitalized_force": "Née Jones"} -{"name": "onorèvole Sr. de Lacon Gunale Antoni Baìngiu Torchitòriu Comita", "order": "FAMILY_FIRST", "given": "Sr.", "middle": "de Lacon Gunale Antoni Baìngiu Torchitòriu Comita", "family": "onorèvole", "initials": "S. L. G. A. B. T. C. o.", "capitalized_force": "Sr. de Lacon Gunale Antoni Baìngiu Torchitòriu Comita Onorèvole"} -{"name": "p. Petraitytė Gabrielė Aldona", "order": "FAMILY_FIRST", "given": "Petraitytė", "middle": "Gabrielė Aldona", "family": "p.", "initials": "P. G. A. p.", "capitalized_force": "Petraitytė Gabrielė Aldona P."} +{"name": "onorèvole Sr. de Lacon Gunale Antoni Baìngiu Torchitòriu Comita", "order": "FAMILY_FIRST", "given": "Sr.", "middle": "de Lacon Gunale Antoni Baìngiu Torchitòriu Comita", "family": "onorèvole", "initials": "S. L. G. A. B. T. C. o.", "capitalized_force": "Onorèvole Sr. de Lacon Gunale Antoni Baìngiu Torchitòriu Comita"} +{"name": "p. Petraitytė Gabrielė Aldona", "order": "FAMILY_FIRST", "given": "Petraitytė", "middle": "Gabrielė Aldona", "family": "p.", "initials": "P. G. A. p.", "capitalized_force": "P. Petraitytė Gabrielė Aldona"} {"name": "pani Alexandra Zuzana Macáková PhD", "given": "pani", "middle": "Alexandra Zuzana", "family": "Macáková", "suffix": "PhD", "initials": "p. A. Z. M.", "capitalized_force": "Pani Alexandra Zuzana MacÁková PhD"} -{"name": "pani Macáková Alexandra Zuzana, PhD", "order": "FAMILY_FIRST", "given": "Macáková", "middle": "Alexandra Zuzana", "family": "pani", "suffix": "PhD", "initials": "M. A. Z. p.", "capitalized_force": "MacÁková Alexandra Zuzana Pani PhD"} -{"name": "paní Alexandra Zuzana Machová Ondřejová, Ph.D.", "title": "paní", "given": "Alexandra", "middle": "Zuzana Machová", "family": "Ondřejová", "suffix": "Ph.D.", "initials": "A. Z. M. O.", "capitalized_force": "Paní Alexandra Zuzana MacHová Ondřejová Ph.D."} -{"name": "paní Machová Ondřejová Alexandra Zuzana, Ph.D.", "order": "FAMILY_FIRST", "title": "paní", "given": "Ondřejová", "middle": "Alexandra Zuzana", "family": "Machová", "suffix": "Ph.D.", "initials": "O. A. Z. M.", "capitalized_force": "Paní Ondřejová Alexandra Zuzana MacHová Ph.D."} +{"name": "pani Macáková Alexandra Zuzana, PhD", "order": "FAMILY_FIRST", "given": "Macáková", "middle": "Alexandra Zuzana", "family": "pani", "suffix": "PhD", "initials": "M. A. Z. p.", "capitalized_force": "Pani MacÁková Alexandra Zuzana, PhD"} +{"name": "paní Alexandra Zuzana Machová Ondřejová, Ph.D.", "title": "paní", "given": "Alexandra", "middle": "Zuzana Machová", "family": "Ondřejová", "suffix": "Ph.D.", "initials": "A. Z. M. O.", "capitalized_force": "Paní Alexandra Zuzana MacHová Ondřejová, Ph.D."} +{"name": "paní Machová Ondřejová Alexandra Zuzana, Ph.D.", "order": "FAMILY_FIRST", "title": "paní", "given": "Ondřejová", "middle": "Alexandra Zuzana", "family": "Machová", "suffix": "Ph.D.", "initials": "O. A. Z. M.", "capitalized_force": "Paní MacHová Ondřejová Alexandra Zuzana, Ph.D."} {"name": "part1 of The part2 of the part3 and part4", "given": "part1 of The part2 of the part3 and part4", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "p. p. p. p.", "capitalized_force": "Part1 of the Part2 of the Part3 and Part4"} {"name": "part1 of and The part2 of the part3 And part4", "given": "part1 of and The part2 of the part3 And part4", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "p. p. p. p.", "capitalized_force": "Part1 of and the Part2 of the Part3 and Part4"} {"name": "pennie von bergen wessels", "given": "pennie", "family": "von bergen wessels", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels"} {"name": "pennie von bergen wessels III", "given": "pennie", "family": "von bergen wessels", "suffix": "III", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels III"} {"name": "pennie von bergen wessels M.D.", "given": "pennie", "family": "von bergen wessels", "suffix": "M.D.", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels M.D."} {"name": "pennie von bergen wessels MD, III", "given": "pennie", "family": "von bergen wessels", "suffix": "MD, III", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels MD, III"} -{"name": "pennie von bergen wessels, III", "given": "pennie", "family": "von bergen wessels", "suffix": "III", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels III"} +{"name": "pennie von bergen wessels, III", "given": "pennie", "family": "von bergen wessels", "suffix": "III", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels, III"} {"name": "prof. dr Ada Cornelia von Brühl", "title": "prof. dr", "given": "Ada", "middle": "Cornelia", "family": "von Brühl", "initials": "A. C. B.", "capitalized_force": "Prof. Dr Ada Cornelia von Brühl"} {"name": "prof. dr Aleksandra Eva Sara van den Volf Petrović Jugović dipl. inž.", "title": "prof. dr", "given": "Aleksandra", "middle": "Eva Sara", "family": "van den Volf Petrović Jugović dipl. inž.", "initials": "A. E. S. V. P. J. d. i.", "capitalized_force": "Prof. Dr Aleksandra Eva Sara van den Volf Petrović Jugović Dipl. Inž."} -{"name": "prof. dr von Brühl Ada Cornelia César Martín", "order": "FAMILY_FIRST", "title": "prof. dr", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Prof. Dr Brühl Ada Cornelia César Martín Von"} +{"name": "prof. dr von Brühl Ada Cornelia César Martín", "order": "FAMILY_FIRST", "title": "prof. dr", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Prof. Dr Von Brühl Ada Cornelia César Martín"} {"name": "prof. dr. Ada Cornelia César Martín von Brühl Jr, univ. bacc", "title": "prof. dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl", "suffix": "Jr, univ. bacc", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (position)"], "initials": "A. C. C. M. B.", "capitalized_force": "Prof. Dr. Ada Cornelia César Martín von Brühl Jr, Univ. Bacc"} -{"name": "prof. dr. Ada Cornelia César Martín von Brühl ml., dr. med., dr. dent. med.", "title": "prof. dr. dr. med. dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl ml.", "suffix": "dent. med.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "A. C. C. M. B. m.", "capitalized_force": "Prof. Dr. Dr. Med. Dr. Ada Cornelia César Martín von Brühl Ml. Dent. Med."} +{"name": "prof. dr. Ada Cornelia César Martín von Brühl ml., dr. med., dr. dent. med.", "title": "prof. dr. dr. med. dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl ml.", "suffix": "dent. med.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "A. C. C. M. B. m.", "capitalized_force": "Prof. Dr. Dr. Med., Dr. Ada Cornelia César Martín von Brühl Ml. Dent. Med."} {"name": "prof. dr. Anna Cornelia Eva Sophia van den Wolf jr. m.d. ph.d.", "title": "prof. dr.", "given": "Anna", "middle": "Cornelia Eva Sophia", "family": "van den Wolf", "suffix": "jr. m.d. ph.d.", "initials": "A. C. E. S. W.", "capitalized_force": "Prof. Dr. Anna Cornelia Eva Sophia van den Wolf Jr. M.D. Ph.D."} {"name": "prof. dr. Gentiana van den Popa, dr. shk. mjek.", "title": "prof. dr. dr. shk. mjek.", "given": "Gentiana", "family": "van den Popa", "initials": "G. P.", "capitalized_force": "Prof. Dr. Dr. Shk. Mjek. Gentiana van den Popa"} {"name": "prof. dr. Izeta Amra von Selimović Hodžić, dipl. stom.", "title": "prof. dr. dipl. stom.", "given": "Izeta", "middle": "Amra", "family": "von Selimović Hodžić", "initials": "I. A. S. H.", "capitalized_force": "Prof. Dr. Dipl. Stom. Izeta Amra von Selimović Hodžić"} {"name": "prof. dr. Popa, Gentiana van den", "title": "prof. dr.", "given": "Gentiana", "family": "van den Popa", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "G. P.", "capitalized_force": "Prof. Dr. Gentiana van den Popa"} {"name": "prof. dr. van den Popa, Gentiana M., dr. shk. mjek.", "order": "FAMILY_FIRST", "title": "prof. dr. dr.", "given": "Gentiana", "middle": "M.", "family": "van den Popa", "suffix": "shk. mjek.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "G. M. P.", "capitalized_force": "Prof. Dr. Dr. Gentiana M. van den Popa Shk. Mjek."} -{"name": "prof. dr. von Brühl Ada Cornelia César Martín, dr. med., dr. dent. med.", "order": "FAMILY_FIRST", "title": "prof. dr. dr. med. dr.", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "suffix": "dent. med.", "ambiguities": ["COMMA_STRUCTURE", "PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Dr. Med. Dr. Brühl Ada Cornelia César Martín Von Dent. Med."} +{"name": "prof. dr. von Brühl Ada Cornelia César Martín, dr. med., dr. dent. med.", "order": "FAMILY_FIRST", "title": "prof. dr. dr. med. dr.", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "suffix": "dent. med.", "ambiguities": ["COMMA_STRUCTURE", "PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Prof. Dr. Dr. Med., Dr. Von Brühl Ada Cornelia César Martín Dent. Med."} {"name": "prof. dr. von Selimović Hodžić, Izeta Amra, dipl. stom.", "title": "prof. dr.", "given": "Izeta", "middle": "Amra", "family": "von Selimović Hodžić", "suffix": "dipl. stom.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "I. A. S. H.", "capitalized_force": "Prof. Dr. Izeta Amra von Selimović Hodžić Dipl. Stom."} {"name": "prof. dr. von Selimović Hodžić, Izeta Amra, dipl. stom.", "order": "FAMILY_FIRST", "title": "prof. dr.", "given": "Izeta", "middle": "Amra", "family": "von Selimović Hodžić", "suffix": "dipl. stom.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "I. A. S. H.", "capitalized_force": "Prof. Dr. Izeta Amra von Selimović Hodžić Dipl. Stom."} {"name": "prof. dr. von Vilkas Jankauskas-Baranauskas, Ada Kornelija Eva Sofija", "order": "FAMILY_FIRST", "title": "prof. dr.", "given": "Ada", "middle": "Kornelija Eva Sofija", "family": "von Vilkas Jankauskas-Baranauskas", "initials": "A. K. E. S. V. J.", "capitalized_force": "Prof. Dr. Ada Kornelija Eva Sofija von Vilkas Jankauskas-Baranauskas"} -{"name": "professori Ana Christina Lëja von Wright González Domingo, MD DDS", "given": "professori", "middle": "Ana Christina Lëja", "family": "von Wright González Domingo", "suffix": "MD DDS", "initials": "p. A. C. L. W. G. D.", "capitalized_force": "Professori Ana Christina Lëja von Wright González Domingo MD DDS"} +{"name": "professori Ana Christina Lëja von Wright González Domingo, MD DDS", "given": "professori", "middle": "Ana Christina Lëja", "family": "von Wright González Domingo", "suffix": "MD DDS", "initials": "p. A. C. L. W. G. D.", "capitalized_force": "Professori Ana Christina Lëja von Wright González Domingo, MD DDS"} {"name": "qc mp", "given": "qc", "suffix": "mp", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "q.", "capitalized": "Qc MP"} {"name": "salem, abdul", "given": "abdul", "family": "salem", "initials": "a. s.", "capitalized": "Abdul Salem"} {"name": "salem, abdul salam", "given": "abdul salam", "family": "salem", "initials": "a. s. s.", "capitalized": "Abdul Salam Salem"} @@ -3984,34 +3998,34 @@ {"name": "smith, john e phd", "given": "john", "middle": "e", "family": "smith", "suffix": "phd", "initials": "j. e. s.", "capitalized": "John E Smith PhD"} {"name": "st.john smith", "title": "st.john", "family": "smith", "initials": "s.", "capitalized": "St.John Smith"} {"name": "st.repr. Gregers Werle Marve Almar von Fleksnes jr.", "title": "st.repr.", "given": "Gregers", "middle": "Werle Marve Almar", "family": "von Fleksnes", "suffix": "jr.", "initials": "G. W. M. A. F.", "capitalized_force": "St.Repr. Gregers Werle Marve Almar von Fleksnes Jr."} -{"name": "st.repr. von Fleksnes Gregers Werle Marve Almar", "order": "FAMILY_FIRST", "title": "st.repr.", "given": "Fleksnes", "middle": "Gregers Werle Marve Almar", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "F. G. W. M. A. v.", "capitalized_force": "St.Repr. Fleksnes Gregers Werle Marve Almar Von"} +{"name": "st.repr. von Fleksnes Gregers Werle Marve Almar", "order": "FAMILY_FIRST", "title": "st.repr.", "given": "Fleksnes", "middle": "Gregers Werle Marve Almar", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "F. G. W. M. A. v.", "capitalized_force": "St.Repr. Von Fleksnes Gregers Werle Marve Almar"} {"name": "test", "given": "test", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "t.", "capitalized": "Test"} {"name": "the and Jon Dough", "given": "the and Jon", "family": "Dough", "initials": "J. D."} {"name": "tran lac", "given": "tran", "family": "lac", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "t. l.", "capitalized": "Tran Lac"} -{"name": "u-Adier u-Irene", "order": "FAMILY_FIRST", "given": "u-Irene", "family": "u-Adier", "initials": "u. u.", "capitalized_force": "U-Irene U-Adier"} +{"name": "u-Adier u-Irene", "order": "FAMILY_FIRST", "given": "u-Irene", "family": "u-Adier", "initials": "u. u.", "capitalized_force": "U-Adier U-Irene"} {"name": "u-Adier, u-Irene", "given": "u-Irene", "family": "u-Adier", "initials": "u. u.", "capitalized_force": "U-Irene U-Adier"} {"name": "u-Irene u-Adier", "given": "u-Irene", "family": "u-Adier", "initials": "u. u.", "capitalized_force": "U-Irene U-Adier"} {"name": "u-John u-Hamish u-Watson", "given": "u-John", "middle": "u-Hamish", "family": "u-Watson", "initials": "u. u. u.", "capitalized_force": "U-John U-Hamish U-Watson"} {"name": "u-Prof. Dr. u-Ada Cornelia u-Eva Sophia u-van den u-Wold u-Becker Schmidt M.D. Ph.D.", "given": "u-Prof.", "middle": "Dr. u-Ada Cornelia u-Eva Sophia u-van", "family": "den u-Wold u-Becker Schmidt", "suffix": "M.D. Ph.D.", "initials": "u. D. u. C. u. S. u. u. u. S.", "capitalized_force": "U-Prof. Dr. U-Ada Cornelia U-Eva Sophia U-van den U-Wold U-Becker Schmidt M.D. Ph.D."} -{"name": "u-Watson u-John u-Hamish", "order": "FAMILY_FIRST", "given": "u-John", "middle": "u-Hamish", "family": "u-Watson", "initials": "u. u. u.", "capitalized_force": "U-John U-Hamish U-Watson"} +{"name": "u-Watson u-John u-Hamish", "order": "FAMILY_FIRST", "given": "u-John", "middle": "u-Hamish", "family": "u-Watson", "initials": "u. u. u.", "capitalized_force": "U-Watson U-John U-Hamish"} {"name": "u-Watson, u-John u-Hamish", "given": "u-John", "middle": "u-Hamish", "family": "u-Watson", "initials": "u. u. u.", "capitalized_force": "U-John U-Hamish U-Watson"} {"name": "u-Wold, u-Ada Cornelia u-Eva Sophia u-van den", "given": "u-Ada", "middle": "Cornelia u-Eva Sophia u-van", "family": "den u-Wold", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: name as middle (declared)"], "initials": "u. C. u. S. u. u.", "capitalized_force": "U-Ada Cornelia U-Eva Sophia U-van den U-Wold"} -{"name": "u-van den u-Wold u-Prof. Dr. u-Ada Cornelia u-Eva Sophia isizukulwane, M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den u-Wold u-Prof. Dr. u-Ada Cornelia u-Eva Sophia isizukulwane", "family": "u-van", "suffix": "M.D. Ph.D.", "initials": "d. u. u. D. u. C. u. S. i. u.", "capitalized_force": "Den U-Wold U-Prof. Dr. U-Ada Cornelia U-Eva Sophia Isizukulwane U-van M.D. Ph.D."} +{"name": "u-van den u-Wold u-Prof. Dr. u-Ada Cornelia u-Eva Sophia isizukulwane, M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den u-Wold u-Prof. Dr. u-Ada Cornelia u-Eva Sophia isizukulwane", "family": "u-van", "suffix": "M.D. Ph.D.", "initials": "d. u. u. D. u. C. u. S. i. u.", "capitalized_force": "U-van Den U-Wold U-Prof. Dr. U-Ada Cornelia U-Eva Sophia Isizukulwane, M.D. Ph.D."} {"name": "vai la", "given": "vai", "family": "la", "initials": "v. l.", "capitalized": "Vai La"} {"name": "van Berg Jan de", "given": "van", "middle": "Berg Jan", "family": "de", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "v. B. J. d.", "capitalized_force": "Van Berg Jan De"} {"name": "van Doe, Jane Mrs", "title": "Mrs", "given": "Jane", "family": "van Doe", "initials": "J. D."} {"name": "van Gogh", "given": "van", "family": "Gogh", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "v. G.", "capitalized_force": "Van Gogh"} {"name": "van Gogh Ana María", "given": "van", "middle": "Gogh Ana", "family": "María", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "v. G. A. M.", "capitalized_force": "Van Gogh Ana María"} {"name": "van Gogh, Sir", "title": "Sir", "family": "van Gogh", "initials": "G."} -{"name": "van den Berg Cornelia Margarita Sofia Aletta MBChB PhD", "order": "FAMILY_FIRST", "given": "den Berg Cornelia Margarita Sofia Aletta", "family": "van", "suffix": "MBChB PhD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. B. C. M. S. A. v.", "capitalized_force": "Den Berg Cornelia Margarita Sofia Aletta Van MBChB PhD"} -{"name": "van den Volf Ada Kornelia Sezar Martin M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Volf Ada Kornelia Sezar Martin", "family": "van", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. A. K. S. M. v.", "capitalized_force": "Den Volf Ada Kornelia Sezar Martin Van M.D. Ph.D."} -{"name": "van den Volf Ada Kornelia Yeva Sofiya M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Volf Ada Kornelia Yeva Sofiya", "family": "van", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. A. K. Y. S. v.", "capitalized_force": "Den Volf Ada Kornelia Yeva Sofiya Van M.D. Ph.D."} +{"name": "van den Berg Cornelia Margarita Sofia Aletta MBChB PhD", "order": "FAMILY_FIRST", "given": "den Berg Cornelia Margarita Sofia Aletta", "family": "van", "suffix": "MBChB PhD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. B. C. M. S. A. v.", "capitalized_force": "Van Den Berg Cornelia Margarita Sofia Aletta MBChB PhD"} +{"name": "van den Volf Ada Kornelia Sezar Martin M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Volf Ada Kornelia Sezar Martin", "family": "van", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. A. K. S. M. v.", "capitalized_force": "Van Den Volf Ada Kornelia Sezar Martin M.D. Ph.D."} +{"name": "van den Volf Ada Kornelia Yeva Sofiya M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Volf Ada Kornelia Yeva Sofiya", "family": "van", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. A. K. Y. S. v.", "capitalized_force": "Van Den Volf Ada Kornelia Yeva Sofiya M.D. Ph.D."} {"name": "van den Volf Becker Schmidt, Prof. Dr. Ada Kornelia Sezar Martin M.D. Ph.D.", "title": "Prof. Dr.", "given": "Ada", "middle": "Kornelia Sezar Martin", "family": "van den Volf Becker Schmidt", "suffix": "M.D. Ph.D.", "initials": "A. K. S. M. V. B. S."} -{"name": "van den Volf prof. dr Aleksandra Eva Sara mlađi, dipl. inž.", "order": "FAMILY_FIRST", "title": "dipl. inž.", "given": "den Volf prof. dr Aleksandra Eva Sara", "family": "van", "suffix": "mlađi", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. p. d. A. E. S. v.", "capitalized_force": "Dipl. Inž. Den Volf Prof. Dr Aleksandra Eva Sara Van Mlađi"} -{"name": "van den Volfa Laima Kristīne", "order": "FAMILY_FIRST", "given": "den Volfa Laima Kristīne", "family": "van", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. L. K. v.", "capitalized_force": "Den Volfa Laima Kristīne Van"} -{"name": "van den Volfa Laima Kristīne Eva Sofija", "order": "FAMILY_FIRST", "given": "den Volfa Laima Kristīne Eva Sofija", "family": "van", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. L. K. E. S. v.", "capitalized_force": "Den Volfa Laima Kristīne Eva Sofija Van"} -{"name": "van den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia", "family": "van", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. W. B. S. F. D. A. C. E. S. v.", "capitalized_force": "Den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia Van M.D. Ph.D."} -{"name": "van den Wolf Prof. Dr. Ada Cornelia Eva Sophia Jr, M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Wolf Prof. Dr. Ada Cornelia Eva Sophia", "family": "van", "suffix": "Jr, M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. W. P. D. A. C. E. S. v.", "capitalized_force": "Den Wolf Prof. Dr. Ada Cornelia Eva Sophia Van Jr, M.D. Ph.D."} +{"name": "van den Volf prof. dr Aleksandra Eva Sara mlađi, dipl. inž.", "order": "FAMILY_FIRST", "title": "dipl. inž.", "given": "den Volf prof. dr Aleksandra Eva Sara", "family": "van", "suffix": "mlađi", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. p. d. A. E. S. v.", "capitalized_force": "Dipl. Inž. Van Den Volf Prof. Dr Aleksandra Eva Sara Mlađi"} +{"name": "van den Volfa Laima Kristīne", "order": "FAMILY_FIRST", "given": "den Volfa Laima Kristīne", "family": "van", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. L. K. v.", "capitalized_force": "Van Den Volfa Laima Kristīne"} +{"name": "van den Volfa Laima Kristīne Eva Sofija", "order": "FAMILY_FIRST", "given": "den Volfa Laima Kristīne Eva Sofija", "family": "van", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. V. L. K. E. S. v.", "capitalized_force": "Van Den Volfa Laima Kristīne Eva Sofija"} +{"name": "van den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia", "family": "van", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. W. B. S. F. D. A. C. E. S. v.", "capitalized_force": "Van Den Wolf Becker Schmidt Farf. Dr. Ada Cornelia Eva Sophia M.D. Ph.D."} +{"name": "van den Wolf Prof. Dr. Ada Cornelia Eva Sophia Jr, M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "den Wolf Prof. Dr. Ada Cornelia Eva Sophia", "family": "van", "suffix": "Jr, M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "d. W. P. D. A. C. E. S. v.", "capitalized_force": "Van Den Wolf Prof. Dr. Ada Cornelia Eva Sophia Jr, M.D. Ph.D."} {"name": "van den Wolf, Prof. Dr. Anna Cornelia Eva Sophia jr. M.D. Ph.D.", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Anna", "middle": "Cornelia Eva Sophia", "family": "van den Wolf", "suffix": "jr. M.D. Ph.D.", "initials": "A. C. E. S. W.", "capitalized_force": "Prof. Dr. Anna Cornelia Eva Sophia van den Wolf Jr. M.D. Ph.D."} {"name": "van den Wolf, prof. dr. Anna Cornelia Eva Sophia jr. m.d. ph.d.", "order": "FAMILY_FIRST", "title": "prof. dr.", "given": "Anna", "middle": "Cornelia Eva Sophia", "family": "van den Wolf", "suffix": "jr. m.d. ph.d.", "initials": "A. C. E. S. W.", "capitalized_force": "Prof. Dr. Anna Cornelia Eva Sophia van den Wolf Jr. M.D. Ph.D."} {"name": "van der Berg, MA", "family": "van der Berg", "suffix": "MA", "initials": "B."} @@ -4019,26 +4033,26 @@ {"name": "van der Berg, Sir", "title": "Sir", "family": "van der Berg", "initials": "B."} {"name": "van ma van", "given": "van", "middle": "ma", "family": "van", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "v. m. v.", "capitalized": "Van Ma Van"} {"name": "van nguyen", "given": "van", "family": "nguyen", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "v. n.", "capitalized": "Van Nguyen"} -{"name": "van. den. Wolf Ada Cornelia Eva Sophia M.D. Ph.D.", "order": "FAMILY_FIRST", "title": "van. den.", "given": "Ada", "middle": "Cornelia Eva Sophia", "family": "Wolf", "suffix": "M.D. Ph.D.", "initials": "A. C. E. S. W.", "capitalized_force": "Van. Den. Ada Cornelia Eva Sophia Wolf M.D. Ph.D."} +{"name": "van. den. Wolf Ada Cornelia Eva Sophia M.D. Ph.D.", "order": "FAMILY_FIRST", "title": "van. den.", "given": "Ada", "middle": "Cornelia Eva Sophia", "family": "Wolf", "suffix": "M.D. Ph.D.", "initials": "A. C. E. S. W.", "capitalized_force": "Van. Den. Wolf Ada Cornelia Eva Sophia M.D. Ph.D."} {"name": "van. den. Wolf, Ada Cornelia Eva Sophia M.D. Ph.D.", "given": "Ada", "middle": "Cornelia Eva Sophia", "family": "van. den. Wolf", "suffix": "M.D. Ph.D.", "initials": "A. C. E. S. W."} -{"name": "von Bjarnadóttir dr. Sigríður Jóna Valgerður Fanndís yngri, M.A. í bókmenntafræði", "order": "FAMILY_FIRST", "given": "Bjarnadóttir", "middle": "dr. Sigríður Jóna Valgerður Fanndís", "family": "von", "suffix": "yngri, M.A. í bókmenntafræði", "ambiguities": ["PARTICLE_OR_GIVEN", "SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: initial as given (shape)", "SUFFIX_OR_NAME: name as given (position)", "PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. d. S. J. V. F. v.", "capitalized_force": "Bjarnadóttir Dr. Sigríður Jóna Valgerður Fanndís Von Yngri, M.A. Í Bókmenntafræði"} +{"name": "von Bjarnadóttir dr. Sigríður Jóna Valgerður Fanndís yngri, M.A. í bókmenntafræði", "order": "FAMILY_FIRST", "given": "Bjarnadóttir", "middle": "dr. Sigríður Jóna Valgerður Fanndís", "family": "von", "suffix": "yngri, M.A. í bókmenntafræði", "ambiguities": ["PARTICLE_OR_GIVEN", "SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: initial as given (shape)", "SUFFIX_OR_NAME: name as given (position)", "PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. d. S. J. V. F. v.", "capitalized_force": "Von Bjarnadóttir Dr. Sigríður Jóna Valgerður Fanndís Yngri, M.A. Í Bókmenntafræði"} {"name": "von Braun", "given": "von", "family": "Braun", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "v. B.", "capitalized_force": "Von Braun"} -{"name": "von Bruhel Ada Cornelia Martina MD DDS", "order": "FAMILY_FIRST", "given": "Bruhel", "middle": "Ada Cornelia Martina", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. M. v.", "capitalized_force": "Bruhel Ada Cornelia Martina Von MD DDS"} -{"name": "von Bruhl Prof. Dr. Ada Cornelia Cesar Martin Jr, MD DDS", "order": "FAMILY_FIRST", "given": "Bruhl", "middle": "Prof. Dr. Ada Cornelia Cesar Martin", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. A. C. C. M. v.", "capitalized_force": "Bruhl Prof. Dr. Ada Cornelia Cesar Martin Von Jr, MD DDS"} -{"name": "von Brühl Ada Cornelia César Martín", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Brühl Ada Cornelia César Martín Von"} -{"name": "von Brühl Ada Cornelia César Martín M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Brühl Ada Cornelia César Martín Von M.D. Ph.D."} -{"name": "von Brühl César Martín Ada Cornelia", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "César Martín Ada Cornelia", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. C. M. A. C. v.", "capitalized_force": "Brühl César Martín Ada Cornelia Von"} -{"name": "von Brühl González Domingo Prof. Dr. Ada Cornelia César Martín Jr, MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "González Domingo Prof. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. P. D. A. C. C. M. v.", "capitalized_force": "Brühl González Domingo Prof. Dr. Ada Cornelia César Martín Von Jr, MD DDS"} -{"name": "von Brühl González Domingo Prof. Dr. Ada Cornelia César Martín MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "González Domingo Prof. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. P. D. A. C. C. M. v.", "capitalized_force": "Brühl González Domingo Prof. Dr. Ada Cornelia César Martín Von MD DDS"} -{"name": "von Brühl González Domingo Prop. Dr. Ada Cornelia César Martín MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "González Domingo Prop. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. P. D. A. C. C. M. v.", "capitalized_force": "Brühl González Domingo Prop. Dr. Ada Cornelia César Martín Von MD DDS"} +{"name": "von Bruhel Ada Cornelia Martina MD DDS", "order": "FAMILY_FIRST", "given": "Bruhel", "middle": "Ada Cornelia Martina", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. M. v.", "capitalized_force": "Von Bruhel Ada Cornelia Martina MD DDS"} +{"name": "von Bruhl Prof. Dr. Ada Cornelia Cesar Martin Jr, MD DDS", "order": "FAMILY_FIRST", "given": "Bruhl", "middle": "Prof. Dr. Ada Cornelia Cesar Martin", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. A. C. C. M. v.", "capitalized_force": "Von Bruhl Prof. Dr. Ada Cornelia Cesar Martin Jr, MD DDS"} +{"name": "von Brühl Ada Cornelia César Martín", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Von Brühl Ada Cornelia César Martín"} +{"name": "von Brühl Ada Cornelia César Martín M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "Ada Cornelia César Martín", "family": "von", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. A. C. C. M. v.", "capitalized_force": "Von Brühl Ada Cornelia César Martín M.D. Ph.D."} +{"name": "von Brühl César Martín Ada Cornelia", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "César Martín Ada Cornelia", "family": "von", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. C. M. A. C. v.", "capitalized_force": "Von Brühl César Martín Ada Cornelia"} +{"name": "von Brühl González Domingo Prof. Dr. Ada Cornelia César Martín Jr, MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "González Domingo Prof. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. P. D. A. C. C. M. v.", "capitalized_force": "Von Brühl González Domingo Prof. Dr. Ada Cornelia César Martín Jr, MD DDS"} +{"name": "von Brühl González Domingo Prof. Dr. Ada Cornelia César Martín MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "González Domingo Prof. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. P. D. A. C. C. M. v.", "capitalized_force": "Von Brühl González Domingo Prof. Dr. Ada Cornelia César Martín MD DDS"} +{"name": "von Brühl González Domingo Prop. Dr. Ada Cornelia César Martín MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "González Domingo Prop. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. G. D. P. D. A. C. C. M. v.", "capitalized_force": "Von Brühl González Domingo Prop. Dr. Ada Cornelia César Martín MD DDS"} {"name": "von Brühl González Domingo, Ada Cornelia César Martín", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl González Domingo", "initials": "A. C. C. M. B. G. D."} {"name": "von Brühl González Domingo, Prof. Dr. Ada Cornelia César Martín Jr, MD DDS", "order": "FAMILY_FIRST", "title": "Prof. Dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl González Domingo", "suffix": "Jr, MD DDS", "initials": "A. C. C. M. B. G. D."} {"name": "von Brühl González Domingo, Prof. Dr. Ada Cornelia César Martín M.D. Ph.D.", "title": "Prof. Dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl González Domingo", "suffix": "M.D. Ph.D.", "initials": "A. C. C. M. B. G. D."} {"name": "von Brühl González Domingo, Prof. Dr. Ada Cornelia César Martín MD DDS", "title": "Prof. Dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl González Domingo", "suffix": "MD DDS", "initials": "A. C. C. M. B. G. D."} {"name": "von Brühl González Domingo, Prop. Dr. Ada Cornelia César Martín MD DDS", "title": "Prop. Dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl González Domingo", "suffix": "MD DDS", "initials": "A. C. C. M. B. G. D."} -{"name": "von Brühl Prof. Dr. Ada Cornelia César Martín Jr, MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "Prof. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. A. C. C. M. v.", "capitalized_force": "Brühl Prof. Dr. Ada Cornelia César Martín Von Jr, MD DDS"} -{"name": "von Brühl Prof. Dr. Mary Lou Cesare Martín Jr., Dr. Ph.D", "order": "FAMILY_FIRST", "title": "Dr.", "given": "Brühl", "middle": "Prof. Dr. Mary Lou Cesare Martín", "family": "von", "suffix": "Jr., Ph.D", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. M. L. C. M. v.", "capitalized_force": "Dr. Brühl Prof. Dr. Mary Lou Cesare Martín Von Jr., Ph.D"} -{"name": "von Brühl mevrouw Ada Cornelia César Martín jr., PhD", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "mevrouw Ada Cornelia César Martín", "family": "von", "suffix": "jr., PhD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. m. A. C. C. M. v.", "capitalized_force": "Brühl Mevrouw Ada Cornelia César Martín Von Jr., PhD"} +{"name": "von Brühl Prof. Dr. Ada Cornelia César Martín Jr, MD DDS", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "Prof. Dr. Ada Cornelia César Martín", "family": "von", "suffix": "Jr, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. A. C. C. M. v.", "capitalized_force": "Von Brühl Prof. Dr. Ada Cornelia César Martín Jr, MD DDS"} +{"name": "von Brühl Prof. Dr. Mary Lou Cesare Martín Jr., Dr. Ph.D", "order": "FAMILY_FIRST", "title": "Dr.", "given": "Brühl", "middle": "Prof. Dr. Mary Lou Cesare Martín", "family": "von", "suffix": "Jr., Ph.D", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. P. D. M. L. C. M. v.", "capitalized_force": "Dr. Von Brühl Prof. Dr. Mary Lou Cesare Martín Jr., Ph.D"} +{"name": "von Brühl mevrouw Ada Cornelia César Martín jr., PhD", "order": "FAMILY_FIRST", "given": "Brühl", "middle": "mevrouw Ada Cornelia César Martín", "family": "von", "suffix": "jr., PhD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. m. A. C. C. M. v.", "capitalized_force": "Von Brühl Mevrouw Ada Cornelia César Martín Jr., PhD"} {"name": "von Brühl, Ada Cornelia César Martín", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl", "initials": "A. C. C. M. B."} {"name": "von Brühl, Ada Cornelia César Martín MD DDS", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl", "suffix": "MD DDS", "initials": "A. C. C. M. B."} {"name": "von Brühl, Ada Cornelia César Martín MD DDS", "order": "FAMILY_FIRST", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl", "suffix": "MD DDS", "initials": "A. C. C. M. B."} @@ -4048,25 +4062,25 @@ {"name": "von Brühl, Prof. dr. Ada Cornelia César Martín, med. dr. fil. dr. jur. dr.", "order": "FAMILY_FIRST", "title": "Prof. dr. dr. dr. dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl", "suffix": "med. fil. jur.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "A. C. C. M. B.", "capitalized_force": "Prof. Dr. Dr. Dr. Dr. Ada Cornelia César Martín von Brühl Med. Fil. Jur."} {"name": "von Brühl, dr. Anastasia Eleni César Martín, cand.odont.", "order": "FAMILY_FIRST", "title": "dr.", "given": "Anastasia", "middle": "Eleni César Martín", "family": "von Brühl", "suffix": "cand.odont.", "initials": "A. E. C. M. B.", "capitalized_force": "Dr. Anastasia Eleni César Martín von Brühl CAND.ODONT."} {"name": "von Brühl, prof. dr. Ada Cornelia César Martín Jr, univ. bacc", "order": "FAMILY_FIRST", "title": "prof. dr.", "given": "Ada", "middle": "Cornelia César Martín", "family": "von Brühl", "suffix": "Jr, univ. bacc", "ambiguities": ["COMMA_STRUCTURE"], "initials": "A. C. C. M. B.", "capitalized_force": "Prof. Dr. Ada Cornelia César Martín von Brühl Jr, Univ. Bacc"} -{"name": "von Brül Erika Cornelia Anna Isabelle II", "order": "FAMILY_FIRST", "given": "Brül", "middle": "Erika Cornelia Anna Isabelle", "family": "von", "suffix": "II", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. E. C. A. I. v.", "capitalized_force": "Brül Erika Cornelia Anna Isabelle Von II"} +{"name": "von Brül Erika Cornelia Anna Isabelle II", "order": "FAMILY_FIRST", "given": "Brül", "middle": "Erika Cornelia Anna Isabelle", "family": "von", "suffix": "II", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "B. E. C. A. I. v.", "capitalized_force": "Von Brül Erika Cornelia Anna Isabelle II"} {"name": "von Fischer, Dr. Paul Vinzent jr. MdB", "order": "FAMILY_FIRST", "title": "Dr.", "given": "Paul", "middle": "Vinzent", "family": "von Fischer", "suffix": "jr. MdB", "initials": "P. V. F.", "capitalized_force": "Dr. Paul Vinzent von Fischer Jr. MDB"} -{"name": "von Kovács Luca Sarolta Éva Erzsébet M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "Kovács", "middle": "Luca Sarolta Éva Erzsébet", "family": "von", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "K. L. S. É. E. v.", "capitalized_force": "Kovács Luca Sarolta Éva Erzsébet Von M.D. Ph.D."} +{"name": "von Kovács Luca Sarolta Éva Erzsébet M.D. Ph.D.", "order": "FAMILY_FIRST", "given": "Kovács", "middle": "Luca Sarolta Éva Erzsébet", "family": "von", "suffix": "M.D. Ph.D.", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "K. L. S. É. E. v.", "capitalized_force": "Von Kovács Luca Sarolta Éva Erzsébet M.D. Ph.D."} {"name": "von Kovács, Luca Sarolta Éva Erzsébet M.D. Ph.D.", "given": "Luca", "middle": "Sarolta Éva Erzsébet", "family": "von Kovács", "suffix": "M.D. Ph.D.", "initials": "L. S. É. E. K."} -{"name": "von Miller Jones Mary Sue Marie II, MD DDS", "order": "FAMILY_FIRST", "given": "Miller", "middle": "Jones Mary Sue Marie", "family": "von", "suffix": "II, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "M. J. M. S. M. v.", "capitalized_force": "Miller Jones Mary Sue Marie Von II, MD DDS"} +{"name": "von Miller Jones Mary Sue Marie II, MD DDS", "order": "FAMILY_FIRST", "given": "Miller", "middle": "Jones Mary Sue Marie", "family": "von", "suffix": "II, MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "M. J. M. S. M. v.", "capitalized_force": "Von Miller Jones Mary Sue Marie II, MD DDS"} {"name": "von Miller Jones, Prof. Dr. Mary Sue Marie", "title": "Prof. Dr.", "given": "Mary", "middle": "Sue Marie", "family": "von Miller Jones", "initials": "M. S. M. M. J."} -{"name": "von Vall Heinmann Laas Prof Anna Liina Eva Sofia MD, PhD", "order": "FAMILY_FIRST", "given": "Vall", "middle": "Heinmann Laas Prof Anna Liina Eva Sofia", "family": "von", "suffix": "MD, PhD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "V. H. L. P. A. L. E. S. v.", "capitalized_force": "Vall Heinmann Laas Prof Anna Liina Eva Sofia Von MD, PhD"} +{"name": "von Vall Heinmann Laas Prof Anna Liina Eva Sofia MD, PhD", "order": "FAMILY_FIRST", "given": "Vall", "middle": "Heinmann Laas Prof Anna Liina Eva Sofia", "family": "von", "suffix": "MD, PhD", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "V. H. L. P. A. L. E. S. v.", "capitalized_force": "Von Vall Heinmann Laas Prof Anna Liina Eva Sofia MD, PhD"} {"name": "von Vall, Anna Liina Eva Sofia, MD, PhD", "given": "Anna", "middle": "Liina Eva Sofia", "family": "von Vall", "suffix": "MD, PhD", "initials": "A. L. E. S. V."} -{"name": "von Wolf Ada Cornelia Eva Sophia MD DDS", "order": "FAMILY_FIRST", "given": "Wolf", "middle": "Ada Cornelia Eva Sophia", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "W. A. C. E. S. v.", "capitalized_force": "Wolf Ada Cornelia Eva Sophia Von MD DDS"} +{"name": "von Wolf Ada Cornelia Eva Sophia MD DDS", "order": "FAMILY_FIRST", "given": "Wolf", "middle": "Ada Cornelia Eva Sophia", "family": "von", "suffix": "MD DDS", "ambiguities": ["PARTICLE_OR_GIVEN"], "alternatives": ["PARTICLE_OR_GIVEN: particle as family (vocabulary)"], "initials": "W. A. C. E. S. v.", "capitalized_force": "Von Wolf Ada Cornelia Eva Sophia MD DDS"} {"name": "von Wright González Domingo Ana Christina Lëja, professori MD DDS", "order": "FAMILY_FIRST", "given": "professori", "family": "von Wright González Domingo Ana Christina Lëja", "suffix": "MD DDS", "initials": "p. W. G. D. A. C. L.", "capitalized_force": "Professori von Wright González Domingo Ana Christina Lëja MD DDS"} {"name": "von Wright, Ana Christina Lëja", "given": "Ana", "middle": "Christina Lëja", "family": "von Wright", "initials": "A. C. L. W."} {"name": "von bergen wessels MD, pennie", "given": "pennie", "family": "von bergen wessels", "suffix": "MD", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels MD"} {"name": "von bergen wessels MD, pennie III", "given": "pennie", "family": "von bergen wessels", "suffix": "MD, III", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels MD, III"} {"name": "von bergen wessels, pennie III", "given": "pennie", "family": "von bergen wessels", "suffix": "III", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels III"} {"name": "von bergen wessels, pennie MD", "given": "pennie", "family": "von bergen wessels", "suffix": "MD", "initials": "p. b. w.", "capitalized": "Pennie von Bergen Wessels MD"} -{"name": "ván den Wólf Adá Cornelia Ẹ́va Sophia M.D. PhD.", "order": "FAMILY_FIRST", "given": "den Wólf Adá Cornelia Ẹ́va Sophia", "family": "ván", "suffix": "M.D. PhD.", "initials": "d. W. A. C. Ẹ. S. v.", "capitalized_force": "Den Wólf Adá Cornelia Ẹ́va Sophia Ván M.D. PhD."} +{"name": "ván den Wólf Adá Cornelia Ẹ́va Sophia M.D. PhD.", "order": "FAMILY_FIRST", "given": "den Wólf Adá Cornelia Ẹ́va Sophia", "family": "ván", "suffix": "M.D. PhD.", "initials": "d. W. A. C. Ẹ. S. v.", "capitalized_force": "Ván Den Wólf Adá Cornelia Ẹ́va Sophia M.D. PhD."} {"name": "ván den Wólf, Adá Cornelia Ẹ́va Sophia M.D. PhD.", "given": "Adá", "middle": "Cornelia Ẹ́va Sophia", "family": "ván den Wólf", "suffix": "M.D. PhD.", "initials": "A. C. Ẹ. S. v. W.", "capitalized_force": "Adá Cornelia Ẹ́va Sophia Ván den Wólf M.D. PhD."} {"name": "wang meng", "given": "wang", "family": "meng", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "w. m.", "capitalized": "Wang Meng"} -{"name": "won Baar Dominique Goudiaby Prof. Dr. Adama Coulibaly Camara Massamba MD DDS", "order": "FAMILY_FIRST", "given": "Baar", "middle": "Dominique Goudiaby Prof. Dr. Adama Coulibaly Camara Massamba", "family": "won", "suffix": "MD DDS", "initials": "B. D. G. P. D. A. C. C. M. w.", "capitalized_force": "Baar Dominique Goudiaby Prof. Dr. Adama Coulibaly Camara Massamba Won MD DDS"} +{"name": "won Baar Dominique Goudiaby Prof. Dr. Adama Coulibaly Camara Massamba MD DDS", "order": "FAMILY_FIRST", "given": "Baar", "middle": "Dominique Goudiaby Prof. Dr. Adama Coulibaly Camara Massamba", "family": "won", "suffix": "MD DDS", "initials": "B. D. G. P. D. A. C. C. M. w.", "capitalized_force": "Won Baar Dominique Goudiaby Prof. Dr. Adama Coulibaly Camara Massamba MD DDS"} {"name": "won Baar Dominique Goudiaby, Prof. Dr. Adama Coulibaly Camara Massamba MD DDS", "title": "Prof. Dr.", "given": "Adama", "middle": "Coulibaly Camara Massamba", "family": "won Baar Dominique Goudiaby", "suffix": "MD DDS", "initials": "A. C. C. M. w. B. D. G.", "capitalized_force": "Prof. Dr. Adama Coulibaly Camara Massamba Won Baar Dominique Goudiaby MD DDS"} {"name": "xyz. John Smith", "title": "xyz.", "given": "John", "family": "Smith", "initials": "J. S.", "capitalized_force": "Xyz. John Smith"} {"name": "ylymlaryň doktory, professor Ada Kornelia Sezar Martin fon Brül Gonzales Domingo, hirurg-stomatolog lukman", "title": "professor", "given": "Ada", "middle": "Kornelia Sezar Martin fon Brül Gonzales Domingo", "family": "ylymlaryň doktory", "suffix": "hirurg-stomatolog lukman", "ambiguities": ["COMMA_STRUCTURE"], "initials": "A. K. S. M. f. B. G. D. y. d.", "capitalized_force": "Professor Ada Kornelia Sezar Martin Fon Brül Gonzales Domingo Ylymlaryň Doktory Hirurg-Stomatolog Lukman"} @@ -4102,7 +4116,7 @@ {"name": "Þórunn Egilsdóttir", "given": "Þórunn", "family": "Egilsdóttir", "initials": "Þ. E."} {"name": "é nee smith", "family": "é", "maiden": "smith", "initials": "é.", "capitalized": "É (Smith)"} {"name": "Āqā Buzurg aṭ-Ṭihrānī", "given": "Āqā", "middle": "Buzurg", "family": "aṭ-Ṭihrānī", "initials": "Ā. B. a.", "capitalized_force": "Āqā Buzurg Aṭ-Ṭihrānī"} -{"name": "ĐBQH Nguyễn Văn Anh", "order": "FAMILY_FIRST", "given": "Nguyễn", "middle": "Văn Anh", "family": "ĐBQH", "initials": "N. V. A. Đ.", "capitalized_force": "Nguyễn Văn Anh Đbqh"} +{"name": "ĐBQH Nguyễn Văn Anh", "order": "FAMILY_FIRST", "given": "Nguyễn", "middle": "Văn Anh", "family": "ĐBQH", "initials": "N. V. A. Đ.", "capitalized_force": "Đbqh Nguyễn Văn Anh"} {"name": "Ğawīdān _ Hānum", "given": "Ğawīdān", "middle": "_", "family": "Hānum", "initials": "Ğ. _. H."} {"name": "Ġazālī, Zainab al-", "given": "Zainab", "family": "al- Ġazālī", "initials": "Z. Ġ."} {"name": "İren Adler", "given": "İren", "family": "Adler", "initials": "İ. A."} @@ -4121,7 +4135,7 @@ {"name": "Ǧalāl-ad-Dīn Rūmī", "given": "Ǧalāl-ad-Dīn", "family": "Rūmī", "initials": "Ǧ. R.", "capitalized_force": "Ǧalāl-Ad-Dīn Rūmī"} {"name": "Ǧaʿfarī, Ibrāhīm al-", "given": "Ibrāhīm", "family": "al- Ǧaʿfarī", "initials": "I. Ǧ."} {"name": "Ǧīhān as-Sādāt", "given": "Ǧīhān", "family": "as-Sādāt", "initials": "Ǧ. a.", "capitalized_force": "Ǧīhān As-Sādāt"} -{"name": "ʊŋono Alaaji KALAM Alɛ Mustafa", "order": "FAMILY_FIRST", "given": "Alaaji", "middle": "KALAM Alɛ Mustafa", "family": "ʊŋono", "initials": "A. K. A. M. ʊ.", "capitalized_force": "Alaaji Kalam Alɛ Mustafa Ʊŋono"} +{"name": "ʊŋono Alaaji KALAM Alɛ Mustafa", "order": "FAMILY_FIRST", "given": "Alaaji", "middle": "KALAM Alɛ Mustafa", "family": "ʊŋono", "initials": "A. K. A. M. ʊ.", "capitalized_force": "Ʊŋono Alaaji Kalam Alɛ Mustafa"} {"name": "ʊŋono Alaaji Mustafa KALAM Alɛ", "given": "ʊŋono", "middle": "Alaaji Mustafa KALAM", "family": "Alɛ", "initials": "ʊ. A. M. K. A.", "capitalized_force": "Ʊŋono Alaaji Mustafa Kalam Alɛ"} {"name": "ʻIOLANI KAMAKA", "given": "ʻIOLANI", "family": "KAMAKA", "initials": "ʻ. K.", "capitalized": "ʻIolani Kamaka"} {"name": "ʿAbbās III.", "given": "ʿAbbās", "suffix": "III.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "ʿ."} @@ -4212,7 +4226,7 @@ {"name": "Χατζής Νικόλαος Καρατζής Κωνσταντίνος Μάριος", "order": "FAMILY_FIRST", "given": "Νικόλαος", "middle": "Καρατζής Κωνσταντίνος Μάριος", "family": "Χατζής", "initials": "Ν. Κ. Κ. Μ. Χ."} {"name": "Χατζής, Νικόλαος Καρατζής Κωνσταντίνος Μάριος", "given": "Νικόλαος", "middle": "Καρατζής Κωνσταντίνος Μάριος", "family": "Χατζής", "initials": "Ν. Κ. Κ. Μ. Χ."} {"name": "Χρήστος Αντωνόπουλος", "given": "Χρήστος", "family": "Αντωνόπουλος", "initials": "Χ. Α."} -{"name": "φον Μπριλ Άντα Κορνέλια Σέσαρ Μαρτίν Δρ.Ι. Δρ.Χ.Ο", "order": "FAMILY_FIRST", "given": "Μπριλ", "middle": "Άντα Κορνέλια Σέσαρ Μαρτίν Δρ.Ι. Δρ.Χ.Ο", "family": "φον", "initials": "Μ. Ά. Κ. Σ. Μ. Δ. Δ. φ.", "capitalized_force": "Μπριλ Άντα Κορνέλια Σέσαρ Μαρτίν Δρ.Ι. Δρ.Χ.Ο Φον"} +{"name": "φον Μπριλ Άντα Κορνέλια Σέσαρ Μαρτίν Δρ.Ι. Δρ.Χ.Ο", "order": "FAMILY_FIRST", "given": "Μπριλ", "middle": "Άντα Κορνέλια Σέσαρ Μαρτίν Δρ.Ι. Δρ.Χ.Ο", "family": "φον", "initials": "Μ. Ά. Κ. Σ. Μ. Δ. Δ. φ.", "capitalized_force": "Φον Μπριλ Άντα Κορνέλια Σέσαρ Μαρτίν Δρ.Ι. Δρ.Χ.Ο"} {"name": "Єва Марія Шевченко", "given": "Єва", "middle": "Марія", "family": "Шевченко", "initials": "Є. М. Ш."} {"name": "Євген Гуцало", "given": "Євген", "family": "Гуцало", "initials": "Є. Г."} {"name": "Євгенія Казбекова", "given": "Євгенія", "family": "Казбекова", "initials": "Є. К."} @@ -4544,7 +4558,7 @@ {"name": "Медведев, Николай Дмитриевич", "given": "Николай", "middle": "Дмитриевич", "family": "Медведев", "initials": "Н. Д. М."} {"name": "Мельник Анна", "order": "FAMILY_FIRST", "given": "Анна", "family": "Мельник", "initials": "А. М."} {"name": "Микола Козленко", "given": "Микола", "family": "Козленко", "initials": "М. К."} -{"name": "Миленковић др Слађана Вера млађи, дипл. инж.", "order": "FAMILY_FIRST", "title": "дипл. инж.", "given": "др", "middle": "Слађана Вера", "family": "Миленковић", "suffix": "млађи", "initials": "д. С. В. М.", "capitalized_force": "Дипл. Инж. Др Слађана Вера Миленковић Млађи"} +{"name": "Миленковић др Слађана Вера млађи, дипл. инж.", "order": "FAMILY_FIRST", "title": "дипл. инж.", "given": "др", "middle": "Слађана Вера", "family": "Миленковић", "suffix": "млађи", "initials": "д. С. В. М.", "capitalized_force": "Дипл. Инж. Миленковић Др Слађана Вера Млађи"} {"name": "Миленковић, Слађана Вера", "given": "Слађана", "middle": "Вера", "family": "Миленковић", "initials": "С. В. М."} {"name": "Милер Кете", "order": "FAMILY_FIRST", "given": "Кете", "family": "Милер", "initials": "К. М."} {"name": "Милер, Кете", "given": "Кете", "family": "Милер", "initials": "К. М."} @@ -4637,7 +4651,7 @@ {"name": "Пеньо Велков", "given": "Пеньо", "family": "Велков", "initials": "П. В."} {"name": "Петар Јовичић", "given": "Петар", "family": "Јовичић", "initials": "П. Ј."} {"name": "Петко Петков", "given": "Петко", "family": "Петков", "initials": "П. П."} -{"name": "Петренко Анна Марія Богдан-Зиновій, доц., проф.", "title": "доц. проф.", "given": "Петренко", "middle": "Анна Марія", "family": "Богдан-Зиновій", "initials": "П. А. М. Б.", "capitalized_force": "Доц. Проф. Петренко Анна Марія Богдан-Зиновій"} +{"name": "Петренко Анна Марія Богдан-Зиновій, доц., проф.", "title": "доц. проф.", "given": "Петренко", "middle": "Анна Марія", "family": "Богдан-Зиновій", "initials": "П. А. М. Б.", "capitalized_force": "Доц., Проф. Петренко Анна Марія Богдан-Зиновій"} {"name": "Петрова, Мария", "given": "Мария", "family": "Петрова", "initials": "М. П."} {"name": "Петрова, Мария", "order": "FAMILY_FIRST", "given": "Мария", "family": "Петрова", "initials": "М. П."} {"name": "Питер Брейгель мл.", "given": "Питер", "family": "Брейгель", "suffix": "мл.", "initials": "П. Б.", "capitalized_force": "Питер Брейгель Мл."} @@ -4733,7 +4747,7 @@ {"name": "Урал", "given": "Урал", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "У."} {"name": "Урал", "order": "FAMILY_FIRST", "family": "Урал", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "У."} {"name": "Урош Рачић", "given": "Урош", "family": "Рачић", "initials": "У. Р."} -{"name": "Фаттахов Азамат Салауат улы", "order": "FAMILY_FIRST", "given": "Азамат", "middle": "Салауат улы", "family": "Фаттахов", "initials": "А. С. у. Ф.", "capitalized_force": "Азамат Салауат Улы Фаттахов"} +{"name": "Фаттахов Азамат Салауат улы", "order": "FAMILY_FIRST", "given": "Азамат", "middle": "Салауат улы", "family": "Фаттахов", "initials": "А. С. у. Ф.", "capitalized_force": "Фаттахов Азамат Салауат Улы"} {"name": "Фаттахов, Азамат Салауат улы", "given": "Азамат", "middle": "Салауат улы", "family": "Фаттахов", "initials": "А. С. у. Ф.", "capitalized_force": "Азамат Салауат Улы Фаттахов"} {"name": "Фаусек, Юлия Ивановна", "given": "Юлия", "middle": "Ивановна", "family": "Фаусек", "initials": "Ю. И. Ф."} {"name": "Федоренко Сергей Васильевич", "order": "FAMILY_FIRST", "given": "Сергей", "middle": "Васильевич", "family": "Федоренко", "initials": "С. В. Ф."} @@ -4786,38 +4800,38 @@ {"name": "Янко Павлов", "given": "Янко", "family": "Павлов", "initials": "Я. П."} {"name": "Яҡупова Ирина", "order": "FAMILY_FIRST", "given": "Ирина", "family": "Яҡупова", "initials": "И. Я."} {"name": "Яҡупова, Ирина", "given": "Ирина", "family": "Яҡупова", "initials": "И. Я."} -{"name": "ван ден Волф проф. др Александра Ева Сара млађи, дипл. инж.", "order": "FAMILY_FIRST", "title": "дипл. инж.", "given": "ден", "middle": "Волф проф. др Александра Ева Сара", "family": "ван", "suffix": "млађи", "initials": "д. В. п. д. А. Е. С. в.", "capitalized_force": "Дипл. Инж. Ден Волф Проф. Др Александра Ева Сара Ван Млађи"} -{"name": "ван ден Вольф Алтынай Сулайманова Асель Сартбаева Илимдин кандидаты", "order": "FAMILY_FIRST", "given": "ден", "middle": "Вольф Алтынай Сулайманова Асель Сартбаева Илимдин кандидаты", "family": "ван", "initials": "д. В. А. С. А. С. И. к. в.", "capitalized_force": "Ден Вольф Алтынай Сулайманова Асель Сартбаева Илимдин Кандидаты Ван"} +{"name": "ван ден Волф проф. др Александра Ева Сара млађи, дипл. инж.", "order": "FAMILY_FIRST", "title": "дипл. инж.", "given": "ден", "middle": "Волф проф. др Александра Ева Сара", "family": "ван", "suffix": "млађи", "initials": "д. В. п. д. А. Е. С. в.", "capitalized_force": "Дипл. Инж. Ван Ден Волф Проф. Др Александра Ева Сара Млађи"} +{"name": "ван ден Вольф Алтынай Сулайманова Асель Сартбаева Илимдин кандидаты", "order": "FAMILY_FIRST", "given": "ден", "middle": "Вольф Алтынай Сулайманова Асель Сартбаева Илимдин кандидаты", "family": "ван", "initials": "д. В. А. С. А. С. И. к. в.", "capitalized_force": "Ван Ден Вольф Алтынай Сулайманова Асель Сартбаева Илимдин Кандидаты"} {"name": "ван ден Вольф Бекер Шмидт, Проф. Доктор. Алтынай Сулайманова Асель Сартбаева Илимдин кандидаты", "title": "Проф. Доктор.", "given": "Алтынай", "middle": "Сулайманова Асель Сартбаева Илимдин кандидаты", "family": "ван ден Вольф Бекер Шмидт", "initials": "А. С. А. С. И. к. в. д. В. Б. Ш.", "capitalized_force": "Проф. Доктор. Алтынай Сулайманова Асель Сартбаева Илимдин Кандидаты Ван Ден Вольф Бекер Шмидт"} -{"name": "вон Брухи Гонзалес Доминго Проф. Док. Ада Корнелиа Сезар Мартин", "order": "FAMILY_FIRST", "given": "Брухи", "middle": "Гонзалес Доминго Проф. Док. Ада Корнелиа Сезар Мартин", "family": "вон", "initials": "Б. Г. Д. П. Д. А. К. С. М. в.", "capitalized_force": "Брухи Гонзалес Доминго Проф. Док. Ада Корнелиа Сезар Мартин Вон"} +{"name": "вон Брухи Гонзалес Доминго Проф. Док. Ада Корнелиа Сезар Мартин", "order": "FAMILY_FIRST", "given": "Брухи", "middle": "Гонзалес Доминго Проф. Док. Ада Корнелиа Сезар Мартин", "family": "вон", "initials": "Б. Г. Д. П. Д. А. К. С. М. в.", "capitalized_force": "Вон Брухи Гонзалес Доминго Проф. Док. Ада Корнелиа Сезар Мартин"} {"name": "вон Брухи Гонзалес Доминго, Проф. Док. Ада Корнелиа Сезар Мартин", "title": "Проф. Док.", "given": "Ада", "middle": "Корнелиа Сезар Мартин", "family": "вон Брухи Гонзалес Доминго", "initials": "А. К. С. М. в. Б. Г. Д.", "capitalized_force": "Проф. Док. Ада Корнелиа Сезар Мартин Вон Брухи Гонзалес Доминго"} -{"name": "вон Брюхл Гонзалес Доминго Проф. Др. Ада Корнелиа Эва Софиа Анагаах ухааны доктор", "order": "FAMILY_FIRST", "given": "Брюхл", "middle": "Гонзалес Доминго Проф. Др. Ада Корнелиа Эва Софиа Анагаах ухааны доктор", "family": "вон", "initials": "Б. Г. Д. П. Д. А. К. Э. С. А. у. д. в.", "capitalized_force": "Брюхл Гонзалес Доминго Проф. Др. Ада Корнелиа Эва Софиа Анагаах Ухааны Доктор Вон"} +{"name": "вон Брюхл Гонзалес Доминго Проф. Др. Ада Корнелиа Эва Софиа Анагаах ухааны доктор", "order": "FAMILY_FIRST", "given": "Брюхл", "middle": "Гонзалес Доминго Проф. Др. Ада Корнелиа Эва Софиа Анагаах ухааны доктор", "family": "вон", "initials": "Б. Г. Д. П. Д. А. К. Э. С. А. у. д. в.", "capitalized_force": "Вон Брюхл Гонзалес Доминго Проф. Др. Ада Корнелиа Эва Софиа Анагаах Ухааны Доктор"} {"name": "г-н Вернер, Иван Асен, проф. д-р", "order": "FAMILY_FIRST", "title": "г-н проф. д-р", "given": "Иван", "middle": "Асен", "family": "Вернер", "initials": "И. А. В.", "capitalized_force": "Г-Н Проф. Д-Р Иван Асен Вернер"} {"name": "г-н Иван Асен Вернер, проф. д-р", "title": "г-н проф. д-р", "given": "Иван", "middle": "Асен", "family": "Вернер", "initials": "И. А. В.", "capitalized_force": "Г-Н Проф. Д-Р Иван Асен Вернер"} {"name": "г-н Иван Петров", "title": "г-н", "given": "Иван", "family": "Петров", "initials": "И. П.", "capitalized_force": "Г-Н Иван Петров"} {"name": "др Слађана Вера Миленковић дипл. инж.", "given": "др", "middle": "Слађана Вера Миленковић дипл.", "family": "инж.", "initials": "д. С. В. М. д. и.", "capitalized_force": "Др Слађана Вера Миленковић Дипл. Инж."} {"name": "проф. Анастасія Єва Софія фон Вольф Гонзалес Домінго, д-р", "title": "проф. д-р", "given": "Анастасія", "middle": "Єва Софія фон Вольф Гонзалес", "family": "Домінго", "initials": "А. Є. С. ф. В. Г. Д.", "capitalized_force": "Проф. Д-Р Анастасія Єва Софія Фон Вольф Гонзалес Домінго"} {"name": "проф. Анна Марія Богдан-Зиновій Петренко доц.", "title": "проф.", "given": "Анна", "middle": "Марія Богдан-Зиновій Петренко", "family": "доц.", "initials": "А. М. Б. П. д.", "capitalized_force": "Проф. Анна Марія Богдан-Зиновій Петренко Доц."} -{"name": "проф. Петренко Анна Марія Богдан-Зиновій доц.", "order": "FAMILY_FIRST", "title": "проф.", "given": "Анна", "middle": "Марія Богдан-Зиновій доц.", "family": "Петренко", "initials": "А. М. Б. д. П.", "capitalized_force": "Проф. Анна Марія Богдан-Зиновій Доц. Петренко"} +{"name": "проф. Петренко Анна Марія Богдан-Зиновій доц.", "order": "FAMILY_FIRST", "title": "проф.", "given": "Анна", "middle": "Марія Богдан-Зиновій доц.", "family": "Петренко", "initials": "А. М. Б. д. П.", "capitalized_force": "Проф. Петренко Анна Марія Богдан-Зиновій Доц."} {"name": "проф. д-р Ада Корнелия Цезар Мартин Брюл, доктор", "title": "проф. д-р", "given": "доктор", "family": "Ада Корнелия Цезар Мартин Брюл", "initials": "д. А. К. Ц. М. Б.", "capitalized_force": "Проф. Д-Р Доктор Ада Корнелия Цезар Мартин Брюл"} {"name": "проф. д-р Ана Марија Цезар Мартин ван ден Волф", "title": "проф. д-р", "given": "Ана", "middle": "Марија Цезар Мартин ван ден", "family": "Волф", "initials": "А. М. Ц. М. в. д. В.", "capitalized_force": "Проф. Д-Р Ана Марија Цезар Мартин Ван Ден Волф"} {"name": "проф. д-р Брюл, Ада Корнелия Цезар Мартин, доктор", "order": "FAMILY_FIRST", "title": "проф. д-р", "given": "Ада", "middle": "Корнелия Цезар Мартин", "family": "Брюл", "suffix": "доктор", "ambiguities": ["COMMA_STRUCTURE"], "initials": "А. К. Ц. М. Б.", "capitalized_force": "Проф. Д-Р Ада Корнелия Цезар Мартин Брюл Доктор"} {"name": "проф. д-р Крсте Петков Мисирков", "title": "проф. д-р", "given": "Крсте", "middle": "Петков", "family": "Мисирков", "initials": "К. П. М.", "capitalized_force": "Проф. Д-Р Крсте Петков Мисирков"} -{"name": "проф. д-р Мисирков Крсте Петков", "order": "FAMILY_FIRST", "title": "проф. д-р", "given": "Крсте", "middle": "Петков", "family": "Мисирков", "initials": "К. П. М.", "capitalized_force": "Проф. Д-Р Крсте Петков Мисирков"} -{"name": "проф. д-р ван ден Волф Ана Марија Цезар Мартин", "order": "FAMILY_FIRST", "title": "проф. д-р", "given": "ден", "middle": "Волф Ана Марија Цезар Мартин", "family": "ван", "initials": "д. В. А. М. Ц. М. в.", "capitalized_force": "Проф. Д-Р Ден Волф Ана Марија Цезар Мартин Ван"} +{"name": "проф. д-р Мисирков Крсте Петков", "order": "FAMILY_FIRST", "title": "проф. д-р", "given": "Крсте", "middle": "Петков", "family": "Мисирков", "initials": "К. П. М.", "capitalized_force": "Проф. Д-Р Мисирков Крсте Петков"} +{"name": "проф. д-р ван ден Волф Ана Марија Цезар Мартин", "order": "FAMILY_FIRST", "title": "проф. д-р", "given": "ден", "middle": "Волф Ана Марија Цезар Мартин", "family": "ван", "initials": "д. В. А. М. Ц. М. в.", "capitalized_force": "Проф. Д-Р Ван Ден Волф Ана Марија Цезар Мартин"} {"name": "проф. др Александра Ева Сара ван ден Волф Петровић Југовић дипл. инж.", "title": "проф.", "given": "др", "middle": "Александра Ева Сара ван ден Волф Петровић Југовић дипл.", "family": "инж.", "initials": "д. А. Е. С. в. д. В. П. Ј. д. и.", "capitalized_force": "Проф. Др Александра Ева Сара Ван Ден Волф Петровић Југовић Дипл. Инж."} -{"name": "проф. фон Вольф Гонзалес Домінго Анастасія Єва Софія д-р", "order": "FAMILY_FIRST", "title": "проф.", "given": "Вольф", "middle": "Гонзалес Домінго Анастасія Єва Софія д-р", "family": "фон", "initials": "В. Г. Д. А. Є. С. д. ф.", "capitalized_force": "Проф. Вольф Гонзалес Домінго Анастасія Єва Софія Д-Р Фон"} +{"name": "проф. фон Вольф Гонзалес Домінго Анастасія Єва Софія д-р", "order": "FAMILY_FIRST", "title": "проф.", "given": "Вольф", "middle": "Гонзалес Домінго Анастасія Єва Софія д-р", "family": "фон", "initials": "В. Г. Д. А. Є. С. д. ф.", "capitalized_force": "Проф. Фон Вольф Гонзалес Домінго Анастасія Єва Софія Д-Р"} {"name": "проф., д-р Ада Корнелия Сезар Мартин фон Брюль кесе, м. ф. д.", "title": "д-р", "given": "Ада", "middle": "Корнелия Сезар Мартин фон Брюль кесе", "family": "проф.", "suffix": "м. ф. д.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "А. К. С. М. ф. Б. к. п.", "capitalized_force": "Д-Р Ада Корнелия Сезар Мартин Фон Брюль Кесе Проф. М. Ф. Д."} {"name": "проф., д-р Ада Корнелия Сезар Мартин фон Брюль — мл., к. м. н.", "title": "д-р", "given": "Ада", "middle": "Корнелия Сезар Мартин фон Брюль —", "family": "проф.", "suffix": "мл., к. м. н.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "А. К. С. М. ф. Б. —. п.", "capitalized_force": "Д-Р Ада Корнелия Сезар Мартин Фон Брюль — Проф. Мл., К. М. Н."} {"name": "проф., д-р Ада Корнелия Сезар Мартин фон Брюль — мл., к.м.н.", "title": "д-р", "given": "Ада", "middle": "Корнелия Сезар Мартин фон Брюль —", "family": "проф.", "suffix": "мл., к.м.н.", "initials": "А. К. С. М. ф. Б. —. п.", "capitalized_force": "Д-Р Ада Корнелия Сезар Мартин Фон Брюль — Проф. Мл., К.М.Н."} {"name": "уулу Төрөкул Махмудов, Мырза Чыңгыз Айтматов Исхак Раззаков Парламент мүчөсү", "given": "Мырза", "middle": "Чыңгыз Айтматов Исхак Раззаков Парламент мүчөсү", "family": "уулу Төрөкул Махмудов", "initials": "М. Ч. А. И. Р. П. м. у. Т. М.", "capitalized_force": "Мырза Чыңгыз Айтматов Исхак Раззаков Парламент Мүчөсү Уулу Төрөкул Махмудов"} -{"name": "уулу Төрөкул Чыңгыз Айтматов Исхак Раззаков Парламент мүчөсү", "order": "FAMILY_FIRST", "given": "Төрөкул", "middle": "Чыңгыз Айтматов Исхак Раззаков Парламент мүчөсү", "family": "уулу", "initials": "Т. Ч. А. И. Р. П. м. у.", "capitalized_force": "Төрөкул Чыңгыз Айтматов Исхак Раззаков Парламент Мүчөсү Уулу"} -{"name": "фон Бруль Ада Карнэлія Сесар Марцін д-р", "order": "FAMILY_FIRST", "given": "Бруль", "middle": "Ада Карнэлія Сесар Марцін д-р", "family": "фон", "initials": "Б. А. К. С. М. д. ф.", "capitalized_force": "Бруль Ада Карнэлія Сесар Марцін Д-Р Фон"} -{"name": "фон Брюль Ада Корнелия", "order": "FAMILY_FIRST", "given": "Брюль", "middle": "Ада Корнелия", "family": "фон", "initials": "Б. А. К. ф.", "capitalized_force": "Брюль Ада Корнелия Фон"} +{"name": "уулу Төрөкул Чыңгыз Айтматов Исхак Раззаков Парламент мүчөсү", "order": "FAMILY_FIRST", "given": "Төрөкул", "middle": "Чыңгыз Айтматов Исхак Раззаков Парламент мүчөсү", "family": "уулу", "initials": "Т. Ч. А. И. Р. П. м. у.", "capitalized_force": "Уулу Төрөкул Чыңгыз Айтматов Исхак Раззаков Парламент Мүчөсү"} +{"name": "фон Бруль Ада Карнэлія Сесар Марцін д-р", "order": "FAMILY_FIRST", "given": "Бруль", "middle": "Ада Карнэлія Сесар Марцін д-р", "family": "фон", "initials": "Б. А. К. С. М. д. ф.", "capitalized_force": "Фон Бруль Ада Карнэлія Сесар Марцін Д-Р"} +{"name": "фон Брюль Ада Корнелия", "order": "FAMILY_FIRST", "given": "Брюль", "middle": "Ада Корнелия", "family": "фон", "initials": "Б. А. К. ф.", "capitalized_force": "Фон Брюль Ада Корнелия"} {"name": "фон Брюль Ада Корнелия Сезар Мартин, к. м. н.", "order": "FAMILY_FIRST", "given": "к.", "middle": "м. н.", "family": "фон Брюль Ада Корнелия Сезар Мартин", "initials": "к. м. н. ф. Б. А. К. С. М.", "capitalized_force": "К. М. Н. Фон Брюль Ада Корнелия Сезар Мартин"} {"name": "фон Брюль проф., д-р Ада Корнелия Сезар Мартин к.м.н.", "order": "FAMILY_FIRST", "title": "д-р", "given": "Ада", "middle": "Корнелия Сезар Мартин", "family": "фон Брюль проф.", "suffix": "к.м.н.", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as middle (position)"], "initials": "А. К. С. М. ф. Б. п.", "capitalized_force": "Д-Р Ада Корнелия Сезар Мартин Фон Брюль Проф. К.М.Н."} {"name": "фон Брюль проф., д-р Ада Корнелия Сезар Мартин кесе, м. ф. д.", "order": "FAMILY_FIRST", "title": "д-р", "given": "Ада", "middle": "Корнелия Сезар Мартин кесе", "family": "фон Брюль проф.", "suffix": "м. ф. д.", "ambiguities": ["COMMA_STRUCTURE"], "initials": "А. К. С. М. к. ф. Б. п.", "capitalized_force": "Д-Р Ада Корнелия Сезар Мартин Кесе Фон Брюль Проф. М. Ф. Д."} -{"name": "фон Вольф Гонзалес Домінго Анастасія Єва Софія, д-р, проф.", "title": "д-р проф.", "given": "фон", "middle": "Вольф Гонзалес Домінго Анастасія Єва", "family": "Софія", "initials": "ф. В. Г. Д. А. Є. С.", "capitalized_force": "Д-Р Проф. Фон Вольф Гонзалес Домінго Анастасія Єва Софія"} +{"name": "фон Вольф Гонзалес Домінго Анастасія Єва Софія, д-р, проф.", "title": "д-р проф.", "given": "фон", "middle": "Вольф Гонзалес Домінго Анастасія Єва", "family": "Софія", "initials": "ф. В. Г. Д. А. Є. С.", "capitalized_force": "Д-Р, Проф. Фон Вольф Гонзалес Домінго Анастасія Єва Софія"} {"name": "хосе и мария сантос", "given": "хосе и мария", "family": "сантос", "initials": "х. м. с.", "capitalized": "Хосе и Мария Сантос"} {"name": "Қайрат Болатұлы Тұрлыханов", "given": "Қайрат", "middle": "Болатұлы", "family": "Тұрлыханов", "initials": "Қ. Б. Т."} {"name": "Қасым Айдар", "order": "FAMILY_FIRST", "given": "Айдар", "family": "Қасым", "initials": "А. Қ."} @@ -4899,10 +4913,10 @@ {"name": "Ցեցիլիա Համիշ Շտյոբեր", "given": "Ցեցիլիա", "middle": "Համիշ", "family": "Շտյոբեր", "initials": "Ց. Հ. Շ."} {"name": "Քեյթ Մյուլեր", "given": "Քեյթ", "family": "Մյուլեր", "initials": "Ք. Մ."} {"name": "Ֆելիքս Բախչինյան", "given": "Ֆելիքս", "family": "Բախչինյան", "initials": "Ֆ. Բ."} -{"name": "բ․գ․դ․ Տեր-Պողոսյան Հայկ Պարգևի", "order": "FAMILY_FIRST", "given": "Տեր-Պողոսյան", "middle": "Հայկ Պարգևի", "family": "բ․գ․դ․", "initials": "Տ. Հ. Պ. բ.", "capitalized_force": "Տեր-Պողոսյան Հայկ Պարգևի Բ․Գ․Դ․"} +{"name": "բ․գ․դ․ Տեր-Պողոսյան Հայկ Պարգևի", "order": "FAMILY_FIRST", "given": "Տեր-Պողոսյան", "middle": "Հայկ Պարգևի", "family": "բ․գ․դ․", "initials": "Տ. Հ. Պ. բ.", "capitalized_force": "Բ․Գ․Դ․ Տեր-Պողոսյան Հայկ Պարգևի"} {"name": "բ․գ․դ․ դ-ր Ադա Կոռնելիա Սեզար Մարտին վան դեն Վոլֆ", "given": "բ․գ․դ․", "middle": "դ-ր Ադա Կոռնելիա Սեզար Մարտին վան դեն", "family": "Վոլֆ", "initials": "բ. դ. Ա. Կ. Ս. Մ. վ. դ. Վ.", "capitalized_force": "Բ․Գ․Դ․ Դ-Ր Ադա Կոռնելիա Սեզար Մարտին Վան Դեն Վոլֆ"} {"name": "բ․գ․դ․ պրն Հայկ Պարգևի Տեր-Պողոսյան", "given": "բ․գ․դ․", "middle": "պրն Հայկ Պարգևի", "family": "Տեր-Պողոսյան", "initials": "բ. պ. Հ. Պ. Տ.", "capitalized_force": "Բ․Գ․Դ․ Պրն Հայկ Պարգևի Տեր-Պողոսյան"} -{"name": "բ․գ․դ․ վան դեն Վոլֆ Ադա Կոռնելիա Սեզար Մարտին", "order": "FAMILY_FIRST", "given": "վան", "middle": "դեն Վոլֆ Ադա Կոռնելիա Սեզար Մարտին", "family": "բ․գ․դ․", "initials": "վ. դ. Վ. Ա. Կ. Ս. Մ. բ.", "capitalized_force": "Վան Դեն Վոլֆ Ադա Կոռնելիա Սեզար Մարտին Բ․Գ․Դ․"} +{"name": "բ․գ․դ․ վան դեն Վոլֆ Ադա Կոռնելիա Սեզար Մարտին", "order": "FAMILY_FIRST", "given": "վան", "middle": "դեն Վոլֆ Ադա Կոռնելիա Սեզար Մարտին", "family": "բ․գ․դ․", "initials": "վ. դ. Վ. Ա. Կ. Ս. Մ. բ.", "capitalized_force": "Բ․Գ․Դ․ Վան Դեն Վոլֆ Ադա Կոռնելիա Սեզար Մարտին"} {"name": "אבן אבן-גבירול מר בנימין משה ח״כ", "order": "FAMILY_FIRST", "given": "אבן-גבירול", "middle": "מר בנימין משה ח״כ", "family": "אבן", "initials": "א. מ. ב. מ. ח. א."} {"name": "אבנר ברזני", "given": "אבנר", "family": "ברזני", "initials": "א. ב."} {"name": "אברהם אדן", "given": "אברהם", "family": "אדן", "initials": "א. א."} @@ -5644,6 +5658,7 @@ {"name": "அல்போன்சோ எர்னஸ்டோ, ஹெர்னாண்டஸ்", "given": "ஹெர்னாண்டஸ்", "family": "அல்போன்சோ எர்னஸ்டோ", "initials": "ஹ. அ. எ."} {"name": "அல்போன்சோ ஹெர்னாண்டஸ்", "given": "அல்போன்சோ", "family": "ஹெர்னாண்டஸ்", "initials": "அ. ஹ."} {"name": "அல்போன்சோ ஹெர்னாண்டஸ்", "order": "FAMILY_FIRST", "given": "ஹெர்னாண்டஸ்", "family": "அல்போன்சோ", "initials": "ஹ. அ."} +{"name": "ஔவையார் கண்ணன்", "given": "ஔவையார்", "family": "கண்ணன்", "initials": "ஔ. க."} {"name": "சோழன் ராஜ ராஜ", "order": "FAMILY_FIRST", "given": "ராஜ", "middle": "ராஜ", "family": "சோழன்", "initials": "ர. ர. ச."} {"name": "சோழன் ராஜேந்திர", "order": "FAMILY_FIRST", "given": "ராஜேந்திர", "family": "சோழன்", "initials": "ர. ச."} {"name": "திரு. சோழன் ராஜ ராஜன் ராஜன் எம்பி", "order": "FAMILY_FIRST", "given": "சோழன்", "middle": "ராஜ ராஜன் ராஜன் எம்பி", "family": "திரு.", "initials": "ச. ர. ர. ர. எ. த."} @@ -5917,7 +5932,7 @@ {"name": "შტიობერი ცეცილია ჰეიმიშ", "order": "FAMILY_FIRST", "given": "ცეცილია", "middle": "ჰეიმიშ", "family": "შტიობერი", "initials": "ც. ჰ. შ."} {"name": "ცეცილია ჰეიმიშ შტიობერი", "given": "ცეცილია", "middle": "ჰეიმიშ", "family": "შტიობერი", "initials": "ც. ჰ. შ."} {"name": "ხვიჩა კვარაცხელია", "given": "ხვიჩა", "family": "კვარაცხელია", "initials": "ხ. კ."} -{"name": "김. 민준", "given": "민준", "family": "김.", "initials": "민. 김."} +{"name": "김. 민준", "given": "민준", "family": "김."} {"name": "ሙለር ካቲ", "order": "FAMILY_FIRST", "given": "ካቲ", "family": "ሙለር", "initials": "ካ. ሙ."} {"name": "ሙለር፣ ካቲ", "order": "FAMILY_FIRST", "given": "ካቲ", "family": "ሙለር፣", "initials": "ካ. ሙ."} {"name": "ሜሪ ሱ ሃሚሽ ዋትሰን", "given": "ሜሪ", "middle": "ሱ ሃሚሽ", "family": "ዋትሰን", "initials": "ሜ. ሱ. ሃ. ዋ."} @@ -5949,7 +5964,7 @@ {"name": "ዜንዳያ", "order": "FAMILY_FIRST", "family": "ዜንዳያ", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "ዜ."} {"name": "ፕ/ር ዶ/ር አዳ ኮርኔሊያ ሴዛር ማርቲን ቮን ብሩህል ጎንዛሌዝ ዶሚንጎ ዶ/ር የጥርስ ዶ/ር", "given": "ፕ/ር", "middle": "ዶ/ር አዳ ኮርኔሊያ ሴዛር ማርቲን ቮን ብሩህል ጎንዛሌዝ ዶሚንጎ ዶ/ር የጥርስ", "family": "ዶ/ር", "initials": "ፕ. ዶ. አ. ኮ. ሴ. ማ. ቮ. ብ. ጎ. ዶ. ዶ. የ. ዶ."} {"name": "ፕሮ. ዶር. ኣዳ ኮርኒሊያ ሲዘር ማርቲን ቮን ብሩሂ ማንጁስ፣ ሓኪም መጥባሕቲ ስኒ", "title": "ፕሮ. ዶር.", "given": "ኣዳ", "middle": "ኮርኒሊያ ሲዘር ማርቲን ቮን ብሩሂ ማንጁስ፣ ሓኪም መጥባሕቲ", "family": "ስኒ", "initials": "ኣ. ኮ. ሲ. ማ. ቮ. ብ. ማ. ሓ. መ. ስ."} -{"name": "ᎠᏕᎸ ᎠᏪᏁ", "order": "FAMILY_FIRST", "given": "ᎠᏪᏁ", "family": "ᎠᏕᎸ", "initials": "Ꭰ. Ꭰ.", "capitalized": "Ꭰꮺꮑ Ꭰꮥꮈ"} +{"name": "ᎠᏕᎸ ᎠᏪᏁ", "order": "FAMILY_FIRST", "given": "ᎠᏪᏁ", "family": "ᎠᏕᎸ", "initials": "Ꭰ. Ꭰ.", "capitalized": "Ꭰꮥꮈ Ꭰꮺꮑ"} {"name": "ᎠᏕᎸ, ᎠᏪᏁ", "given": "ᎠᏪᏁ", "family": "ᎠᏕᎸ", "initials": "Ꭰ. Ꭰ.", "capitalized": "Ꭰꮺꮑ Ꭰꮥꮈ"} {"name": "ᎠᏪᏁ ᎠᏕᎸ", "given": "ᎠᏪᏁ", "family": "ᎠᏕᎸ", "initials": "Ꭰ. Ꭰ.", "capitalized": "Ꭰꮺꮑ Ꭰꮥꮈ"} {"name": "ᎧᏖ ᎽᎴ", "given": "ᎧᏖ", "family": "ᎽᎴ", "initials": "Ꭷ. Ꮍ.", "capitalized": "Ꭷꮦ Ꮍꮄ"} @@ -5957,17 +5972,17 @@ {"name": "ᎨᏓᏯ", "order": "FAMILY_FIRST", "family": "ᎨᏓᏯ", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "Ꭸ.", "capitalized": "Ꭸꮣꮿ"} {"name": "ᎺᎵ ᏑᎢ ᎭᎻᏏ ᏩᏔᏒᎢ", "given": "ᎺᎵ", "middle": "ᏑᎢ ᎭᎻᏏ", "family": "ᏩᏔᏒᎢ", "initials": "Ꮊ. Ꮡ. Ꭽ. Ꮹ.", "capitalized": "Ꮊꮅ Ꮡꭲ Ꭽꮋꮟ Ꮹꮤꮢꭲ"} {"name": "ᎻᏍᏖᎢ ᏇᏔᎻ ᏫᏇᏉᏏ ᎮᏂᏇ ᏆᏇᏘ ᏬᏍᏖᎢ ᏔᎵᏁ, ᎷᏢ", "given": "ᎷᏢ", "family": "ᎻᏍᏖᎢ ᏇᏔᎻ ᏫᏇᏉᏏ ᎮᏂᏇ ᏆᏇᏘ ᏬᏍᏖᎢ ᏔᎵᏁ", "initials": "Ꮇ. Ꮋ. Ꮗ. Ꮻ. Ꭾ. Ꮖ. Ꮼ. Ꮤ.", "capitalized": "Ꮇꮲ Ꮋꮝꮦꭲ Ꮗꮤꮋ Ꮻꮗꮙꮟ Ꭾꮒꮗ Ꮖꮗꮨ Ꮼꮝꮦꭲ Ꮤꮅꮑ"} -{"name": "ᎽᎴ ᎧᏖ", "order": "FAMILY_FIRST", "given": "ᎧᏖ", "family": "ᎽᎴ", "initials": "Ꭷ. Ꮍ.", "capitalized": "Ꭷꮦ Ꮍꮄ"} +{"name": "ᎽᎴ ᎧᏖ", "order": "FAMILY_FIRST", "given": "ᎧᏖ", "family": "ᎽᎴ", "initials": "Ꭷ. Ꮍ.", "capitalized": "Ꮍꮄ Ꭷꮦ"} {"name": "ᎽᎴ, ᎧᏖ", "given": "ᎧᏖ", "family": "ᎽᎴ", "initials": "Ꭷ. Ꮍ.", "capitalized": "Ꭷꮦ Ꮍꮄ"} {"name": "ᏆᏏᎵ ᎭᎻᏍᎯ ᏍᏙᏇᎢ", "given": "ᏆᏏᎵ", "middle": "ᎭᎻᏍᎯ", "family": "ᏍᏙᏇᎢ", "initials": "Ꮖ. Ꭽ. Ꮝ.", "capitalized": "Ꮖꮟꮅ Ꭽꮋꮝꭿ Ꮝꮩꮗꭲ"} {"name": "ᏇᎯ, ᎠᏓ ᎪᏁᎵᎠ ᏏᏌ ᎹᏘᏂ ᏉᏂ", "given": "ᎠᏓ", "middle": "ᎪᏁᎵᎠ ᏏᏌ ᎹᏘᏂ ᏉᏂ", "family": "ᏇᎯ", "initials": "Ꭰ. Ꭺ. Ꮟ. Ꮉ. Ꮙ. Ꮗ.", "capitalized": "Ꭰꮣ Ꭺꮑꮅꭰ Ꮟꮜ Ꮉꮨꮒ Ꮙꮒ Ꮗꭿ"} {"name": "Ꮙ. ᏅᏬᏘ ᎠᏓ ᎪᏁᎵᎠ ᏏᏌ ᎹᏘᏂ ᏉᏂ ᏇᎯ ᏔᎵᏁ, ᎷᎠ ᎠᎠᏚ", "given": "ᎷᎠ", "middle": "ᎠᎠᏚ", "family": "Ꮙ. ᏅᏬᏘ ᎠᏓ ᎪᏁᎵᎠ ᏏᏌ ᎹᏘᏂ ᏉᏂ ᏇᎯ ᏔᎵᏁ", "initials": "Ꮇ. Ꭰ. Ꮙ. Ꮕ. Ꭰ. Ꭺ. Ꮟ. Ꮉ. Ꮙ. Ꮗ. Ꮤ.", "capitalized": "Ꮇꭰ Ꭰꭰꮪ Ꮙ. Ꮕꮼꮨ Ꭰꮣ Ꭺꮑꮅꭰ Ꮟꮜ Ꮉꮨꮒ Ꮙꮒ Ꮗꭿ Ꮤꮅꮑ"} {"name": "ᏉᏂ ᏇᎯ Ꮙ. ᏅᏬᏘ ᎠᏓ ᎪᏁᎵᎠ ᏏᏌ ᎹᏘᏂ ᏔᎵᏁ, ᎷᎠ ᎠᎠᏚ", "order": "FAMILY_FIRST", "given": "ᎷᎠ", "middle": "ᎠᎠᏚ", "family": "ᏉᏂ ᏇᎯ Ꮙ. ᏅᏬᏘ ᎠᏓ ᎪᏁᎵᎠ ᏏᏌ ᎹᏘᏂ ᏔᎵᏁ", "initials": "Ꮇ. Ꭰ. Ꮙ. Ꮗ. Ꮙ. Ꮕ. Ꭰ. Ꭺ. Ꮟ. Ꮉ. Ꮤ.", "capitalized": "Ꮇꭰ Ꭰꭰꮪ Ꮙꮒ Ꮗꭿ Ꮙ. Ꮕꮼꮨ Ꭰꮣ Ꭺꮑꮅꭰ Ꮟꮜ Ꮉꮨꮒ Ꮤꮅꮑ"} -{"name": "ᏍᏙᏇᎢ ᏆᏏᎵ ᎭᎻᏍᎯ", "order": "FAMILY_FIRST", "given": "ᏆᏏᎵ", "middle": "ᎭᎻᏍᎯ", "family": "ᏍᏙᏇᎢ", "initials": "Ꮖ. Ꭽ. Ꮝ.", "capitalized": "Ꮖꮟꮅ Ꭽꮋꮝꭿ Ꮝꮩꮗꭲ"} +{"name": "ᏍᏙᏇᎢ ᏆᏏᎵ ᎭᎻᏍᎯ", "order": "FAMILY_FIRST", "given": "ᏆᏏᎵ", "middle": "ᎭᎻᏍᎯ", "family": "ᏍᏙᏇᎢ", "initials": "Ꮖ. Ꭽ. Ꮝ.", "capitalized": "Ꮝꮩꮗꭲ Ꮖꮟꮅ Ꭽꮋꮝꭿ"} {"name": "ᏍᏙᏇᎢ, ᏆᏏᎵ ᎭᎻᏍᎯ", "given": "ᏆᏏᎵ", "middle": "ᎭᎻᏍᎯ", "family": "ᏍᏙᏇᎢ", "initials": "Ꮖ. Ꭽ. Ꮝ.", "capitalized": "Ꮖꮟꮅ Ꭽꮋꮝꭿ Ꮝꮩꮗꭲ"} {"name": "ᏏᎾᏆᏗ", "given": "ᏏᎾᏆᏗ", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "Ꮟ.", "capitalized": "Ꮟꮎꮖꮧ"} {"name": "ᏏᎾᏆᏗ", "order": "FAMILY_FIRST", "family": "ᏏᎾᏆᏗ", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "Ꮟ.", "capitalized": "Ꮟꮎꮖꮧ"} -{"name": "ᏩᏔᏒᎢ ᎺᎵ ᏑᎢ ᎭᎻᏏ", "order": "FAMILY_FIRST", "given": "ᎺᎵ", "middle": "ᏑᎢ ᎭᎻᏏ", "family": "ᏩᏔᏒᎢ", "initials": "Ꮊ. Ꮡ. Ꭽ. Ꮹ.", "capitalized": "Ꮊꮅ Ꮡꭲ Ꭽꮋꮟ Ꮹꮤꮢꭲ"} +{"name": "ᏩᏔᏒᎢ ᎺᎵ ᏑᎢ ᎭᎻᏏ", "order": "FAMILY_FIRST", "given": "ᎺᎵ", "middle": "ᏑᎢ ᎭᎻᏏ", "family": "ᏩᏔᏒᎢ", "initials": "Ꮊ. Ꮡ. Ꭽ. Ꮹ.", "capitalized": "Ꮹꮤꮢꭲ Ꮊꮅ Ꮡꭲ Ꭽꮋꮟ"} {"name": "ᏩᏔᏒᎢ, ᎺᎵ ᏑᎢ ᎭᎻᏏ", "given": "ᎺᎵ", "middle": "ᏑᎢ ᎭᎻᏏ", "family": "ᏩᏔᏒᎢ", "initials": "Ꮊ. Ꮡ. Ꭽ. Ꮹ.", "capitalized": "Ꮊꮅ Ꮡꭲ Ꭽꮋꮟ Ꮹꮤꮢꭲ"} {"name": "ᏬᏍᏖᎢ ᎻᏍᏖᎢ ᏇᏔᎻ ᏫᏇᏉᏏ ᎮᏂᏇ ᏆᏇᏘ ᏔᎵᏁ, ᎷᏢ", "order": "FAMILY_FIRST", "given": "ᎷᏢ", "family": "ᏬᏍᏖᎢ ᎻᏍᏖᎢ ᏇᏔᎻ ᏫᏇᏉᏏ ᎮᏂᏇ ᏆᏇᏘ ᏔᎵᏁ", "initials": "Ꮇ. Ꮼ. Ꮋ. Ꮗ. Ꮻ. Ꭾ. Ꮖ. Ꮤ.", "capitalized": "Ꮇꮲ Ꮼꮝꮦꭲ Ꮋꮝꮦꭲ Ꮗꮤꮋ Ꮻꮗꮙꮟ Ꭾꮒꮗ Ꮖꮗꮨ Ꮤꮅꮑ"} {"name": "ᏬᏍᏖᎢ, ᏇᏔᎻ ᏫᏇᏉᏏ ᎮᏂᏇ ᏆᏇᏘ", "given": "ᏇᏔᎻ", "middle": "ᏫᏇᏉᏏ ᎮᏂᏇ ᏆᏇᏘ", "family": "ᏬᏍᏖᎢ", "initials": "Ꮗ. Ꮻ. Ꭾ. Ꮖ. Ꮼ.", "capitalized": "Ꮗꮤꮋ Ꮻꮗꮙꮟ Ꭾꮒꮗ Ꮖꮗꮨ Ꮼꮝꮦꭲ"} @@ -6004,533 +6019,539 @@ {"name": "Ṭihrānī, Āqā Buzurg aṭ-", "given": "Āqā", "middle": "Buzurg", "family": "aṭ- Ṭihrānī", "initials": "Ā. B. Ṭ."} {"name": "Ṯābit Ibn-Qurra", "given": "Ṯābit", "family": "Ibn-Qurra", "initials": "Ṯ. I.", "capitalized_force": "Ṯābit ibn-Qurra"} {"name": "​Dr. John Smith", "title": "Dr.", "given": "John", "family": "Smith", "initials": "J. S."} -{"name": "​王小明", "family": "王小明", "initials": "王."} +{"name": "​王小明", "family": "王小明"} {"name": "‏John‏ Smith", "given": "John", "family": "Smith", "initials": "J. S."} {"name": "‏محمد بن سلمان‏", "given": "محمد", "family": "بن سلمان", "initials": "م. س."} {"name": "∫≜⩕ Smith 😊", "given": "∫≜⩕", "family": "Smith", "initials": "∫. S."} {"name": "∫≜⩕ Smith😊", "given": "∫≜⩕", "family": "Smith", "initials": "∫. S."} -{"name": "〆木 ひろ", "given": "ひろ", "family": "〆木", "initials": "ひ. 〆."} -{"name": "〆木 太郎", "given": "太郎", "family": "〆木", "initials": "太. 〆."} -{"name": "〆木太郎", "family": "〆木太郎", "initials": "〆."} -{"name": "あ゙い たろう", "given": "たろう", "family": "あ゙い", "initials": "た. あ."} -{"name": "さん", "family": "さん", "initials": "さ."} -{"name": "みなみ", "family": "みなみ", "initials": "み."} -{"name": "ア゙イ タロウ", "given": "ア゙イ", "family": "タロウ", "initials": "ア. タ."} -{"name": "ア゛イ タロウ", "given": "ア゛イ", "family": "タロウ", "initials": "ア. タ."} -{"name": "アインシュタイン・アルベルト", "order": "FAMILY_FIRST", "given": "アルベルト", "family": "アインシュタイン", "initials": "ア. ア."} -{"name": "アルベルト・アインシュタイン", "given": "アルベルト", "family": "アインシュタイン", "initials": "ア. ア."} -{"name": "エリザベス二世", "given": "エリザベス", "suffix": "二世", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "エ."} -{"name": "ジェニファー・ソフィア・フォン・スミス・ジュニア博士", "given": "ソフィア", "middle": "フォン スミス ジュニア博士", "family": "ジェニファー", "initials": "ソ. フ. ス. ジ. ジ."} -{"name": "セシリア・ローズ・ブラウン", "given": "セシリア", "middle": "ローズ", "family": "ブラウン", "initials": "セ. ロ. ブ."} -{"name": "フォン・スミス・ソフィア・ジェニファー", "order": "FAMILY_FIRST", "given": "スミス", "middle": "ソフィア ジェニファー", "family": "フォン", "initials": "ス. ソ. ジ. フ."} -{"name": "フォン・スミス・ソフィア・ジェニファー博士", "order": "FAMILY_FIRST", "given": "スミス", "middle": "ソフィア ジェニファー博士", "family": "フォン", "initials": "ス. ソ. ジ. フ."} -{"name": "ブラウン・ローズ・セシリア", "order": "FAMILY_FIRST", "given": "ローズ", "middle": "セシリア", "family": "ブラウン", "initials": "ロ. セ. ブ."} -{"name": "マイケル", "given": "マイケル", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "マ."} -{"name": "マイケル", "order": "FAMILY_FIRST", "family": "マイケル", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"], "initials": "マ."} -{"name": "マイケル ア゙イ", "given": "マイケル", "family": "ア゙イ", "initials": "マ. ア."} -{"name": "マイケル ジャクソン", "given": "マイケル", "family": "ジャクソン", "initials": "マ. ジ."} -{"name": "マイケル ジャクソン", "given": "マイケル", "family": "ジャクソン", "initials": "マ. ジ."} -{"name": "マイケル.", "given": "マイケル.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "マ."} -{"name": "マイケル·ジャクソン", "given": "マイケル", "family": "ジャクソン", "initials": "マ. ジ."} -{"name": "マイケル・ジャクソン", "given": "マイケル", "family": "ジャクソン", "initials": "マ. ジ."} -{"name": "ロバート・ダウニー・ジュニア", "given": "ロバート", "family": "ダウニー", "suffix": "ジュニア", "initials": "ロ. ダ."} -{"name": "一郎安藤", "family": "一郎安藤", "initials": "一."} -{"name": "三橋淳", "family": "三橋淳", "initials": "三."} -{"name": "上山輝一", "family": "上山輝一", "initials": "上."} -{"name": "中内力", "family": "中内力", "initials": "中."} -{"name": "中島 徹", "given": "徹", "family": "中島", "initials": "徹. 中."} -{"name": "中川龍一", "family": "中川龍一", "initials": "中."} -{"name": "亀井三郎", "family": "亀井三郎", "initials": "亀."} -{"name": "伊豆田莉奈", "family": "伊豆田莉奈", "initials": "伊."} -{"name": "佐々木 勇人", "given": "勇人", "family": "佐々木", "initials": "勇. 佐."} -{"name": "佐々木 太郎", "given": "太郎", "family": "佐々木", "initials": "太. 佐."} -{"name": "佐々木謙一郎", "family": "佐々木謙一郎", "initials": "佐."} -{"name": "佐藤 花子 \"旧姓・田中\" (旧姓 鈴木)", "given": "花子", "family": "佐藤", "nickname": "旧姓 田中", "maiden": "鈴木", "initials": "花. 佐."} -{"name": "佐藤グレース恵子", "order": "FAMILY_FIRST", "family": "佐藤グレース恵子", "initials": "佐."} -{"name": "佐藤グレース恵子さん", "order": "FAMILY_FIRST", "family": "佐藤グレース恵子", "suffix": "さん", "initials": "佐."} -{"name": "佐藤恵子 国会議員", "family": "佐藤恵子", "suffix": "国会議員", "initials": "佐."} -{"name": "佐藤恵子国会議員", "family": "佐藤恵子", "suffix": "国会議員", "initials": "佐."} -{"name": "何炅", "family": "何炅", "initials": "何."} -{"name": "何瑞麟", "family": "何瑞麟", "initials": "何."} -{"name": "俊年杰思陈", "family": "俊年杰思陈", "initials": "俊."} -{"name": "先生子媚惠仪陈小,太平绅士", "family": "先生子媚惠仪陈小", "suffix": "太平绅士", "initials": "先."} -{"name": "先生子媚惠儀陳小,太平紳士", "family": "先生子媚惠儀陳小", "suffix": "太平紳士", "initials": "先."} -{"name": "克特·米勒", "given": "克特", "family": "米勒", "initials": "克. 米."} -{"name": "内田誠", "family": "内田誠", "initials": "内."} -{"name": "内藤博文", "family": "内藤博文", "initials": "内."} -{"name": "凯晴", "family": "凯晴", "initials": "凯."} -{"name": "凯晴", "order": "FAMILY_FIRST", "family": "凯晴", "initials": "凯."} -{"name": "凱晴", "family": "凱晴", "initials": "凱."} -{"name": "凱晴", "order": "FAMILY_FIRST", "family": "凱晴", "initials": "凱."} -{"name": "刘婉婷", "family": "刘婉婷", "initials": "刘."} -{"name": "刘放", "family": "刘放", "initials": "刘."} -{"name": "刘旺", "family": "刘旺", "initials": "刘."} -{"name": "刘相蓉", "family": "刘相蓉", "initials": "刘."} -{"name": "刘维", "family": "刘维", "initials": "刘."} -{"name": "前田秀樹", "family": "前田秀樹", "initials": "前."} -{"name": "北野誠", "family": "北野誠", "initials": "北."} -{"name": "华楠", "family": "华楠", "initials": "华."} -{"name": "卫惠林", "family": "卫惠林", "initials": "卫."} -{"name": "司马相如", "family": "司马相如", "initials": "司."} -{"name": "吉尾弘", "family": "吉尾弘", "initials": "吉."} -{"name": "吉川亨", "family": "吉川亨", "initials": "吉."} -{"name": "吳·永強·德安", "order": "FAMILY_FIRST", "given": "永強", "middle": "德安", "family": "吳", "initials": "永. 德. 吳."} -{"name": "吴·永强·德安", "order": "FAMILY_FIRST", "given": "永强", "middle": "德安", "family": "吴", "initials": "永. 德. 吴."} -{"name": "周美玲", "family": "周美玲", "initials": "周."} -{"name": "唐由之", "family": "唐由之", "initials": "唐."} -{"name": "坂本 龍馬", "given": "龍馬", "family": "坂本", "initials": "龍. 坂."} -{"name": "城戸 四郎", "given": "四郎", "family": "城戸", "initials": "四. 城."} -{"name": "堀内 克明", "given": "克明", "family": "堀内", "initials": "克. 堀."} -{"name": "塞西莉亚·哈米什·施托贝尔", "given": "塞西莉亚", "middle": "哈米什", "family": "施托贝尔", "initials": "塞. 哈. 施."} -{"name": "夏侯惇", "family": "夏侯惇", "initials": "夏."} -{"name": "夏萍", "family": "夏萍", "initials": "夏."} -{"name": "多田大介", "family": "多田大介", "initials": "多."} -{"name": "大沢衛", "family": "大沢衛", "initials": "大."} -{"name": "太田三郎", "family": "太田三郎", "initials": "太."} -{"name": "太郎トーマス山田", "family": "太郎トーマス山田", "initials": "太."} -{"name": "姚明", "family": "姚明", "initials": "姚."} -{"name": "威廉·莎士比亚", "given": "威廉", "family": "莎士比亚", "initials": "威. 莎."} -{"name": "威廉·莎士比亚, PhD", "given": "威廉", "family": "莎士比亚", "suffix": "PhD", "initials": "威. 莎."} -{"name": "威廉·莎士比亚さん", "given": "威廉", "family": "莎士比亚", "suffix": "さん", "initials": "威. 莎."} -{"name": "威廉・莎士比亚", "given": "莎士比亚", "family": "威廉", "initials": "莎. 威."} -{"name": "孙悦", "family": "孙悦", "initials": "孙."} -{"name": "孟建柱", "family": "孟建柱", "initials": "孟."} -{"name": "宇瀚", "family": "宇瀚", "initials": "宇."} -{"name": "宇瀚", "order": "FAMILY_FIRST", "family": "宇瀚", "initials": "宇."} -{"name": "安东尼·陈志明", "given": "安东尼", "family": "陈志明", "initials": "安. 陈."} -{"name": "安倍なつみ", "family": "安倍なつみ", "initials": "安."} -{"name": "安怡张", "family": "安怡张", "initials": "安."} -{"name": "安藤一郎", "order": "FAMILY_FIRST", "family": "安藤一郎", "initials": "安."} -{"name": "安達禎", "family": "安達禎", "initials": "安."} -{"name": "宋楠", "family": "宋楠", "initials": "宋."} -{"name": "家豪明德林", "family": "家豪明德林", "initials": "家."} -{"name": "小冯·布鲁赫·艾达·科妮莉亚·塞萨尔·马丁·博士教授", "order": "FAMILY_FIRST", "given": "布鲁赫", "middle": "艾达 科妮莉亚 塞萨尔 马丁", "family": "小冯", "suffix": "博士 教授", "initials": "布. 艾. 科. 塞. 马. 小."} -{"name": "小彭德威东升议员先生", "order": "FAMILY_FIRST", "family": "小彭德威东升议员", "suffix": "先生", "initials": "小."} -{"name": "小德威东升彭议员先生", "family": "小德威东升彭议员", "suffix": "先生", "initials": "小."} -{"name": "小明", "family": "小明", "initials": "小."} -{"name": "小杉 啓太", "given": "啓太", "family": "小杉", "initials": "啓. 小."} -{"name": "小林宏", "family": "小林宏", "initials": "小."} -{"name": "小林由佳", "family": "小林由佳", "initials": "小."} -{"name": "小柳俊一", "family": "小柳俊一", "initials": "小."} -{"name": "小清水 亜美", "given": "亜美", "family": "小清水", "initials": "亜. 小."} -{"name": "小艾达·科妮莉亚·塞萨尔·马丁·冯·布鲁赫博士教授", "given": "小艾达", "middle": "科妮莉亚 塞萨尔 马丁 冯", "family": "布鲁赫博士", "suffix": "教授", "initials": "小. 科. 塞. 马. 冯. 布."} -{"name": "山田 ア゙イ", "given": "ア゙イ", "family": "山田", "initials": "ア. 山."} -{"name": "山田 エミ", "given": "エミ", "family": "山田", "initials": "エ. 山."} -{"name": "山田 太郎", "given": "太郎", "family": "山田", "initials": "太. 山."} -{"name": "山田 太郎 (マイケル・ジャクソン)", "given": "太郎", "family": "山田", "nickname": "マイケル ジャクソン", "initials": "太. 山."} -{"name": "山田 花子 旧姓 佐藤", "given": "花子", "family": "山田", "maiden": "佐藤", "initials": "花. 山."} -{"name": "山田 花子 旧姓:佐藤", "given": "山田", "middle": "花子", "family": "旧姓:佐藤", "initials": "山. 花. 旧."} -{"name": "山田 花子(旧姓 佐藤)", "given": "花子", "family": "山田", "maiden": "佐藤", "initials": "花. 山."} -{"name": "山田 「タロー」 タロウ", "given": "タロウ", "family": "山田", "nickname": "タロー", "initials": "タ. 山."} -{"name": "山田 タロウ", "given": "タロウ", "family": "山田", "initials": "タ. 山."} -{"name": "山田 ダイスケ", "given": "ダイスケ", "family": "山田", "initials": "タ. 山."} -{"name": "山田 ペーター", "given": "ペーター", "family": "山田", "initials": "ヘ. 山."} -{"name": "山田「タロ」太郎", "given": "太郎", "family": "山田", "nickname": "タロ", "initials": "太. 山."} -{"name": "山田トーマス太郎", "order": "FAMILY_FIRST", "family": "山田トーマス太郎", "initials": "山."} -{"name": "山田太郎様", "family": "山田太郎", "suffix": "様", "initials": "山."} -{"name": "山田花子 旧姓 佐藤", "family": "山田花子", "maiden": "佐藤", "initials": "山."} -{"name": "山田「タロー」太郎", "given": "太郎", "family": "山田", "nickname": "タロー", "initials": "太. 山."} -{"name": "山田タロウ", "family": "山田タロウ", "initials": "山."} -{"name": "岡正雄", "family": "岡正雄", "initials": "岡."} -{"name": "岸田文雄衆議院議員", "family": "岸田文雄衆議院", "suffix": "議員", "initials": "岸."} -{"name": "崔晓桐", "family": "崔晓桐", "initials": "崔."} -{"name": "布鲁赫·艾达·科妮莉亚·塞萨尔·马丁·冯", "order": "FAMILY_FIRST", "given": "艾达", "middle": "科妮莉亚 塞萨尔 马丁 冯", "family": "布鲁赫", "initials": "艾. 科. 塞. 马. 冯. 布."} -{"name": "平賀淳", "family": "平賀淳", "initials": "平."} -{"name": "引地良一", "family": "引地良一", "initials": "引."} -{"name": "张伟", "family": "张伟", "initials": "张."} -{"name": "张安怡", "order": "FAMILY_FIRST", "family": "张安怡", "initials": "张."} -{"name": "张简", "family": "张简", "initials": "张."} -{"name": "张翰", "family": "张翰", "initials": "张."} -{"name": "张雅婷", "order": "FAMILY_FIRST", "family": "张雅婷", "initials": "张."} -{"name": "張瑞", "family": "張瑞", "initials": "張."} -{"name": "張雅婷", "order": "FAMILY_FIRST", "family": "張雅婷", "initials": "張."} -{"name": "張韶涵", "family": "張韶涵", "initials": "張."} -{"name": "彭孟緝", "family": "彭孟緝", "initials": "彭."} -{"name": "彭德威 议员", "family": "彭德威", "suffix": "议员", "initials": "彭."} -{"name": "彭德威东升", "order": "FAMILY_FIRST", "family": "彭德威东升", "initials": "彭."} -{"name": "怡君達印馮·陳二世博士,醫學博士", "given": "怡君達印馮", "family": "陳二世博士", "suffix": "醫學博士", "initials": "怡. 陳."} -{"name": "恵子グレース佐藤ジュニアさん", "family": "恵子グレース佐藤ジュニア", "suffix": "さん", "initials": "恵."} -{"name": "慎太郎", "family": "慎太郎", "initials": "慎."} -{"name": "慎太郎", "order": "FAMILY_FIRST", "family": "慎太郎", "initials": "慎."} -{"name": "揖斐章", "family": "揖斐章", "initials": "揖."} -{"name": "教授·怡君·达印·陈·陈·小,博士", "given": "教授", "middle": "怡君 达印 陈 陈", "family": "小", "suffix": "博士", "initials": "教. 怡. 达. 陈. 陈. 小."} -{"name": "教授·怡君·達印·陳·陳·小,博士", "given": "教授", "middle": "怡君 達印 陳 陳", "family": "小", "suffix": "博士", "initials": "教. 怡. 達. 陳. 陳. 小."} -{"name": "文傑", "family": "文傑", "initials": "文."} -{"name": "文傑", "order": "FAMILY_FIRST", "family": "文傑", "initials": "文."} -{"name": "文强", "family": "文强", "initials": "文."} -{"name": "文杰", "family": "文杰", "initials": "文."} -{"name": "文杰", "order": "FAMILY_FIRST", "family": "文杰", "initials": "文."} -{"name": "方豪", "family": "方豪", "initials": "方."} -{"name": "施托贝尔·塞西莉亚·哈米什", "order": "FAMILY_FIRST", "given": "塞西莉亚", "middle": "哈米什", "family": "施托贝尔", "initials": "塞. 哈. 施."} -{"name": "木内 信夫", "given": "信夫", "family": "木内", "initials": "信. 木."} -{"name": "朱世英", "family": "朱世英", "initials": "朱."} -{"name": "朱旭", "family": "朱旭", "initials": "朱."} -{"name": "朱霖", "family": "朱霖", "initials": "朱."} -{"name": "朴璐美", "family": "朴璐美", "initials": "朴."} -{"name": "李俊賢", "family": "李俊賢", "initials": "李."} -{"name": "李博", "family": "李博", "initials": "李."} -{"name": "李宗文", "family": "李宗文", "initials": "李."} -{"name": "李影", "family": "李影", "initials": "李."} -{"name": "李正中", "family": "李正中", "initials": "李."} -{"name": "李瞻", "family": "李瞻", "initials": "李."} -{"name": "李翔", "family": "李翔", "initials": "李."} -{"name": "李诗沣", "family": "李诗沣", "initials": "李."} -{"name": "李部長", "family": "李部長", "initials": "李."} -{"name": "村田喜一", "family": "村田喜一", "initials": "村."} -{"name": "杨扬", "family": "杨扬", "initials": "杨."} -{"name": "杨旭", "family": "杨旭", "initials": "杨."} -{"name": "東郷文彦", "family": "東郷文彦", "initials": "東."} -{"name": "林 力", "given": "力", "family": "林", "initials": "力. 林."} -{"name": "林國華", "family": "林國華", "initials": "林."} -{"name": "林家豪明德", "order": "FAMILY_FIRST", "family": "林家豪明德", "initials": "林."} -{"name": "柯洁", "family": "柯洁", "initials": "柯."} -{"name": "柴山景綱", "family": "柴山景綱", "initials": "柴."} -{"name": "桃田賢斗", "family": "桃田賢斗", "initials": "桃."} -{"name": "桜井昌司", "family": "桜井昌司", "initials": "桜."} -{"name": "森卯一", "family": "森卯一", "initials": "森."} -{"name": "毛 泽东", "given": "泽东", "family": "毛", "initials": "泽. 毛."} -{"name": "毛 泽东 Dr.", "title": "Dr.", "given": "泽东", "family": "毛", "initials": "泽. 毛."} -{"name": "毛 김", "given": "毛", "family": "김", "initials": "毛. 김."} -{"name": "毛·泽东", "given": "毛", "family": "泽东", "initials": "毛. 泽."} -{"name": "毛泽东", "family": "毛泽东", "initials": "毛."} -{"name": "毛泽东 MA", "given": "毛泽东", "family": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "毛. M.", "capitalized": "毛泽东 Ma"} -{"name": "毛泽东, MA", "given": "MA", "family": "毛泽东", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "M. 毛.", "capitalized": "Ma 毛泽东"} -{"name": "永強·德安·吳", "given": "永強", "middle": "德安", "family": "吳", "initials": "永. 德. 吳."} -{"name": "永强·德安·吴", "given": "永强", "middle": "德安", "family": "吴", "initials": "永. 德. 吴."} -{"name": "永翘·黄", "given": "永翘", "family": "黄", "initials": "永. 黄."} -{"name": "永翹·黃", "given": "永翹", "family": "黃", "initials": "永. 黃."} -{"name": "汪洋", "family": "汪洋", "initials": "汪."} -{"name": "汪顺", "family": "汪顺", "initials": "汪."} -{"name": "沈鵬", "family": "沈鵬", "initials": "沈."} -{"name": "河合亨", "family": "河合亨", "initials": "河."} -{"name": "渋谷健一", "family": "渋谷健一", "initials": "渋."} -{"name": "湯浅浩", "family": "湯浅浩", "initials": "湯."} -{"name": "牧野虎雄", "family": "牧野虎雄", "initials": "牧."} -{"name": "王 小 明", "given": "小", "middle": "明", "family": "王", "initials": "小. 明. 王."} -{"name": "王·Smith", "given": "王·Smith", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "王."} -{"name": "王·雅婷", "order": "FAMILY_FIRST", "given": "雅婷", "family": "王", "initials": "雅. 王."} -{"name": "王·雅婷·婷婷", "order": "FAMILY_FIRST", "given": "雅婷", "middle": "婷婷", "family": "王", "initials": "雅. 婷. 王."} -{"name": "王先生", "family": "王", "suffix": "先生", "initials": "王."} -{"name": "王先生, V.", "given": "V.", "family": "王", "suffix": "先生", "initials": "V. 王."} -{"name": "王君", "family": "王君", "initials": "王."} -{"name": "王小明 先生", "family": "王小明", "suffix": "先生", "initials": "王."} -{"name": "王小明先生", "family": "王小明", "suffix": "先生", "initials": "王."} -{"name": "王氏", "family": "王氏", "initials": "王."} -{"name": "王鑫", "family": "王鑫", "initials": "王."} -{"name": "王镇", "family": "王镇", "initials": "王."} -{"name": "王雅婷婷婷", "order": "FAMILY_FIRST", "family": "王雅婷婷婷", "initials": "王."} -{"name": "王雅婷婷婷二世議員", "order": "FAMILY_FIRST", "family": "王雅婷婷婷二世", "suffix": "議員", "initials": "王."} -{"name": "王雅婷,議員", "family": "王雅婷", "suffix": "議員", "initials": "王."} -{"name": "王雪莹", "family": "王雪莹", "initials": "王."} -{"name": "田中 さん", "family": "田中", "suffix": "さん", "initials": "田."} -{"name": "田中 副社長", "given": "副", "family": "田中", "suffix": "社長", "initials": "副. 田."} -{"name": "田中 太郎 旧姓 佐藤 MA", "given": "太郎", "family": "田中", "suffix": "MA", "maiden": "佐藤", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as maiden (declared)"], "initials": "太. 田."} -{"name": "田中 太郎 様", "given": "太郎", "family": "田中", "suffix": "様", "initials": "太. 田."} -{"name": "田中 太郎, MA", "given": "太郎", "family": "田中", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "太. 田."} -{"name": "田中 殿", "family": "田中", "suffix": "殿", "initials": "田."} -{"name": "田中 社長", "family": "田中", "suffix": "社長", "initials": "田."} -{"name": "田中, 太郎 MA", "given": "太郎", "family": "田中", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as middle (declared)"], "initials": "太. 田."} -{"name": "田中, 太郎さん", "given": "太郎", "family": "田中", "suffix": "さん", "initials": "太. 田."} -{"name": "田中.", "family": "田中.", "initials": "田."} -{"name": "田中. 太郎", "given": "太郎", "family": "田中.", "initials": "太. 田."} -{"name": "田中、太郎", "given": "田中、太郎", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "田."} -{"name": "田中『ハナ』花子", "given": "花子", "family": "田中", "nickname": "ハナ", "initials": "花. 田."} -{"name": "田中さん", "family": "田中", "suffix": "さん", "initials": "田."} -{"name": "田中さん II", "family": "田中", "suffix": "さん II", "initials": "田."} -{"name": "田中さん V.", "given": "田中さん", "family": "V.", "initials": "田. V."} -{"name": "田中さん v", "given": "田中さん", "family": "v", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "田. v.", "capitalized": "田中さん V"} -{"name": "田中さん 様.", "family": "田中", "suffix": "さん 様.", "initials": "田."} -{"name": "田中さん, Dr.", "title": "Dr.", "family": "田中さん", "initials": "田."} -{"name": "田中さん, Ph. D.", "family": "田中", "suffix": "さん, Ph. D.", "initials": "田."} -{"name": "田中さん, PhD", "family": "田中", "suffix": "さん, PhD", "initials": "田."} -{"name": "田中さん, V.", "given": "V.", "family": "田中", "suffix": "さん", "initials": "V. 田."} -{"name": "田中さん, 太郎", "given": "太郎", "family": "田中さん", "initials": "太. 田."} -{"name": "田中さん, 様.", "family": "田中", "suffix": "さん, 様.", "initials": "田."} -{"name": "田中さん.", "family": "田中", "suffix": "さん.", "initials": "田."} -{"name": "田中さん., V.", "given": "V.", "family": "田中", "suffix": "さん.", "initials": "V. 田."} -{"name": "田中医学博士", "family": "田中", "suffix": "医学博士", "initials": "田."} -{"name": "田中博士", "family": "田中博士", "initials": "田."} -{"name": "田中社長", "family": "田中", "suffix": "社長", "initials": "田."} -{"name": "田中部長", "family": "田中部長", "initials": "田."} -{"name": "白文正", "family": "白文正", "initials": "白."} -{"name": "石智勇", "family": "石智勇", "initials": "石."} -{"name": "秦彦三郎", "family": "秦彦三郎", "initials": "秦."} -{"name": "端山 忠左衛門", "given": "忠左衛門", "family": "端山", "initials": "忠. 端."} -{"name": "米勒·克特", "order": "FAMILY_FIRST", "given": "克特", "family": "米勒", "initials": "克. 米."} -{"name": "米川信夫", "family": "米川信夫", "initials": "米."} -{"name": "罗建文", "family": "罗建文", "initials": "罗."} -{"name": "罗隆基", "family": "罗隆基", "initials": "罗."} -{"name": "胡英", "family": "胡英", "initials": "胡."} -{"name": "茅祖權", "family": "茅祖權", "initials": "茅."} -{"name": "草刈潤", "family": "草刈潤", "initials": "草."} -{"name": "荒木茂", "family": "荒木茂", "initials": "荒."} -{"name": "葉克強", "family": "葉克強", "initials": "葉."} -{"name": "葉陶", "family": "葉陶", "initials": "葉."} -{"name": "蔡国强", "family": "蔡国强", "initials": "蔡."} -{"name": "蔡桂英", "family": "蔡桂英", "initials": "蔡."} -{"name": "蔡金生", "family": "蔡金生", "initials": "蔡."} -{"name": "蔣經國", "family": "蔣經國", "initials": "蔣."} -{"name": "藤井旭", "family": "藤井旭", "initials": "藤."} -{"name": "藤田信雄", "family": "藤田信雄", "initials": "藤."} -{"name": "蘇貞昌", "family": "蘇貞昌", "initials": "蘇."} -{"name": "詹桓", "family": "詹桓", "initials": "詹."} -{"name": "諫山博", "family": "諫山博", "initials": "諫."} -{"name": "諸葛亮", "family": "諸葛亮", "initials": "諸."} -{"name": "謝暉", "family": "謝暉", "initials": "謝."} -{"name": "谢文清", "family": "谢文清", "initials": "谢."} -{"name": "趙小蘭", "family": "趙小蘭", "initials": "趙."} -{"name": "辛巴达", "family": "辛巴达", "initials": "辛."} -{"name": "辛巴达", "order": "FAMILY_FIRST", "family": "辛巴达", "initials": "辛."} -{"name": "近藤平三郎", "family": "近藤平三郎", "initials": "近."} -{"name": "遠藤晴", "family": "遠藤晴", "initials": "遠."} -{"name": "邓志伟", "family": "邓志伟", "initials": "邓."} -{"name": "邓逸凡", "family": "邓逸凡", "initials": "邓."} -{"name": "邵毓麟", "family": "邵毓麟", "initials": "邵."} -{"name": "郑爽", "family": "郑爽", "initials": "郑."} -{"name": "郭丹", "family": "郭丹", "initials": "郭."} -{"name": "郭靜", "family": "郭靜", "initials": "郭."} -{"name": "鈴木亀蔵", "family": "鈴木亀蔵", "initials": "鈴."} -{"name": "鎌田 弥彦", "given": "弥彦", "family": "鎌田", "initials": "弥. 鎌."} -{"name": "钟离小凤", "family": "钟离小凤", "initials": "钟."} -{"name": "陈·怡君·达印", "order": "FAMILY_FIRST", "given": "怡君", "middle": "达印", "family": "陈", "initials": "怡. 达. 陈."} -{"name": "陈·陈·怡君·教授,小·达印·博士", "order": "FAMILY_FIRST", "given": "小", "middle": "达印", "family": "陈 陈 怡君", "suffix": "教授, 博士", "initials": "小. 达. 陈. 陈. 怡."} -{"name": "陈俊年杰思", "order": "FAMILY_FIRST", "family": "陈俊年杰思", "initials": "陈."} -{"name": "陈凯歌", "family": "陈凯歌", "initials": "陈."} -{"name": "陈子媚先生,小惠仪太平绅士", "order": "FAMILY_FIRST", "given": "小惠仪", "family": "陈子媚先生", "suffix": "太平绅士", "initials": "小. 陈."} -{"name": "陈子媚惠仪", "order": "FAMILY_FIRST", "family": "陈子媚惠仪", "initials": "陈."} -{"name": "陈静", "family": "陈静", "initials": "陈."} -{"name": "陳·怡君·達印", "order": "FAMILY_FIRST", "given": "怡君", "middle": "達印", "family": "陳", "initials": "怡. 達. 陳."} -{"name": "陳·陳·怡君·教授,小·達印·博士", "order": "FAMILY_FIRST", "given": "小", "middle": "達印", "family": "陳 陳 怡君", "suffix": "教授, 博士", "initials": "小. 達. 陳. 陳. 怡."} -{"name": "陳俊傑", "family": "陳俊傑", "initials": "陳."} -{"name": "陳婷", "family": "陳婷", "initials": "陳."} -{"name": "陳子媚 二世", "family": "陳子媚", "suffix": "二世", "initials": "陳."} -{"name": "陳子媚先生,小惠儀太平紳士", "order": "FAMILY_FIRST", "given": "小惠儀", "family": "陳子媚先生", "suffix": "太平紳士", "initials": "小. 陳."} -{"name": "陳子媚惠儀", "order": "FAMILY_FIRST", "family": "陳子媚惠儀", "initials": "陳."} -{"name": "陳怡君 二世", "family": "陳怡君", "suffix": "二世", "initials": "陳."} -{"name": "陳怡君二世", "family": "陳怡君", "suffix": "二世", "initials": "陳."} -{"name": "陳怡君,醫學博士", "family": "陳怡君", "suffix": "醫學博士", "initials": "陳."} -{"name": "陳明忠", "family": "陳明忠", "initials": "陳."} -{"name": "雅婷", "family": "雅婷", "initials": "雅."} -{"name": "雅婷", "order": "FAMILY_FIRST", "family": "雅婷", "initials": "雅."} -{"name": "雅婷婷婷王", "family": "雅婷婷婷王", "initials": "雅."} -{"name": "雅婷婷婷王二世先生,議員", "family": "雅婷婷婷王二世", "suffix": "先生, 議員", "initials": "雅."} -{"name": "雅婷张", "family": "雅婷张", "initials": "雅."} -{"name": "雅婷張", "family": "雅婷張", "initials": "雅."} -{"name": "雅婷王", "family": "雅婷王", "initials": "雅."} -{"name": "韩光", "family": "韩光", "initials": "韩."} -{"name": "韩旭", "family": "韩旭", "initials": "韩."} -{"name": "韩红", "family": "韩红", "initials": "韩."} -{"name": "馮·陳·怡君·達印", "order": "FAMILY_FIRST", "given": "陳", "middle": "怡君 達印", "family": "馮", "initials": "陳. 怡. 達. 馮."} -{"name": "馮·陳·怡君·達印·二世醫學博士", "order": "FAMILY_FIRST", "given": "陳", "middle": "怡君 達印", "family": "馮", "suffix": "二世 醫學博士", "initials": "陳. 怡. 達. 馮."} -{"name": "馮定國", "family": "馮定國", "initials": "馮."} -{"name": "駒井玲子", "family": "駒井玲子", "initials": "駒."} -{"name": "马丁·路德·金", "given": "马丁", "middle": "路德", "family": "金", "initials": "马. 路. 金."} -{"name": "马丁·路德·金씨", "given": "马丁", "middle": "路德", "family": "金", "suffix": "씨", "initials": "马. 路. 金."} -{"name": "高橋 みなみ", "given": "みなみ", "family": "高橋", "initials": "み. 高."} -{"name": "高橋みなみ", "family": "高橋みなみ", "initials": "高."} -{"name": "高橋・一郎", "given": "一郎", "family": "高橋", "initials": "一. 高."} -{"name": "高橋一郎", "family": "高橋一郎", "initials": "高."} -{"name": "高橋章", "family": "高橋章", "initials": "高."} -{"name": "高田栄二", "family": "高田栄二", "initials": "高."} -{"name": "魏曦", "family": "魏曦", "initials": "魏."} -{"name": "鵜殿", "family": "鵜殿", "initials": "鵜."} -{"name": "黃·永翹", "order": "FAMILY_FIRST", "given": "永翹", "family": "黃", "initials": "永. 黃."} -{"name": "黄·永翘", "order": "FAMILY_FIRST", "given": "永翘", "family": "黄", "initials": "永. 黄."} -{"name": "黄乃", "family": "黄乃", "initials": "黄."} -{"name": "黄浩", "family": "黄浩", "initials": "黄."} -{"name": "黎智英", "family": "黎智英", "initials": "黎."} -{"name": "강명순", "given": "명순", "family": "강", "initials": "명. 강."} -{"name": "강유미", "order": "FAMILY_FIRST", "given": "유미", "family": "강", "initials": "유. 강."} -{"name": "강혜원", "given": "혜원", "family": "강", "initials": "혜. 강."} -{"name": "고 상돈", "given": "상돈", "family": "고", "initials": "상. 고."} -{"name": "고기봉", "given": "기봉", "family": "고", "initials": "기. 고."} -{"name": "고요한", "given": "요한", "family": "고", "initials": "요. 고."} -{"name": "공옥진", "given": "옥진", "family": "공", "initials": "옥. 공."} -{"name": "권재진", "given": "재진", "family": "권", "initials": "재. 권."} -{"name": "권중동", "given": "중동", "family": "권", "initials": "중. 권."} -{"name": "김 v", "given": "김", "family": "v", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "김. v.", "capitalized": "김 V"} -{"name": "김 민준", "given": "민준", "family": "김", "initials": "민. 김."} -{"name": "김, 민준 MA", "given": "민준", "family": "김", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as middle (declared)"], "initials": "민. 김."} -{"name": "김, 민준씨", "given": "민준", "family": "김", "suffix": "씨", "initials": "민. 김."} -{"name": "김, 민준씨 (Jimmy)", "given": "민준", "family": "김", "suffix": "씨", "nickname": "Jimmy", "initials": "민. 김."} -{"name": "김. 민준", "given": "민준", "family": "김.", "initials": "민. 김."} -{"name": "김゙민준", "given": "김゙민준", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "김."} -{"name": "김경애", "given": "경애", "family": "김", "initials": "경. 김."} -{"name": "김계원", "given": "계원", "family": "김", "initials": "계. 김."} -{"name": "김기영", "given": "기영", "family": "김", "initials": "기. 김."} -{"name": "김민규헨리", "order": "FAMILY_FIRST", "given": "민규헨리", "family": "김", "initials": "민. 김."} -{"name": "김민준", "given": "민준", "family": "김", "initials": "민. 김."} -{"name": "김민준 님", "given": "민준", "family": "김", "suffix": "님", "initials": "민. 김."} -{"name": "김민준 박, MA Jones", "given": "MA", "middle": "Jones", "family": "김민준 박", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "M. J. 김. 박.", "capitalized_force": "Ma Jones 김민준 박"} -{"name": "김민준 박, X.Y.Z.", "given": "민준", "middle": "박", "family": "김", "suffix": "X.Y.Z.", "initials": "민. 박. 김."} -{"name": "김민준 박사", "given": "민준", "family": "김", "suffix": "박사", "initials": "민. 김."} -{"name": "김민준 박사 씨", "given": "민준", "family": "김", "suffix": "박사 씨", "initials": "민. 김."} -{"name": "김민준 박사님", "given": "민준", "family": "김", "suffix": "박사님", "initials": "민. 김."} -{"name": "김민준 씨", "given": "민준", "family": "김", "suffix": "씨", "initials": "민. 김."} -{"name": "김민준 씨.", "given": "민준", "family": "김", "suffix": "씨.", "initials": "민. 김."} -{"name": "김민준 씨。", "given": "민준", "family": "김", "suffix": "씨。", "initials": "민. 김."} -{"name": "김민준 씨.", "given": "민준", "family": "김", "suffix": "씨.", "initials": "민. 김."} -{"name": "김민준 씨。", "given": "민준", "family": "김", "suffix": "씨。", "initials": "민. 김."} -{"name": "김민준 양", "given": "민준", "family": "김", "suffix": "양", "initials": "민. 김."} -{"name": "김민준 양.", "given": "민준", "family": "김", "suffix": "양.", "initials": "민. 김."} -{"name": "김민준, 씨", "family": "김민준", "suffix": "씨", "initials": "김."} -{"name": "김민준, 씨.", "family": "김민준", "suffix": "씨.", "initials": "김."} -{"name": "김민준.", "given": "민준.", "family": "김", "initials": "민. 김."} -{"name": "김민준. 지훈", "given": "민준.", "middle": "지훈", "family": "김", "initials": "민. 지. 김."} -{"name": "김민준님", "given": "민준", "family": "김", "suffix": "님", "initials": "민. 김."} -{"name": "김민준박사님", "given": "민준", "family": "김", "suffix": "박사님", "initials": "민. 김."} -{"name": "김민준씨", "given": "민준", "family": "김", "suffix": "씨", "initials": "민. 김."} -{"name": "김민준씨 (Jimmy)", "given": "민준", "family": "김", "suffix": "씨", "nickname": "Jimmy", "initials": "민. 김."} -{"name": "김민준씨 Jr.", "given": "민준", "family": "김", "suffix": "씨 Jr.", "initials": "민. 김."} -{"name": "김민준씨, J.씨", "family": "김민준", "suffix": "씨, J.씨", "initials": "김."} -{"name": "김민준씨, MA PhD", "family": "김민준", "suffix": "씨, MA PhD", "initials": "김."} -{"name": "김민준씨, V.", "given": "V.", "family": "김민준", "suffix": "씨", "initials": "V. 김."} -{"name": "김민준씨.", "given": "민준", "family": "김", "suffix": "씨.", "initials": "민. 김."} -{"name": "김민준씨., J.씨", "family": "김민준", "suffix": "씨., J.씨", "initials": "김."} -{"name": "김병관", "given": "병관", "family": "김", "initials": "병. 김."} -{"name": "김상철", "given": "상철", "family": "김", "initials": "상. 김."} -{"name": "김선생님", "family": "김", "suffix": "선생님", "initials": "김."} -{"name": "김선영", "given": "선영", "family": "김", "initials": "선. 김."} -{"name": "김성혜", "given": "성혜", "family": "김", "initials": "성. 김."} -{"name": "김성훈", "given": "성훈", "family": "김", "initials": "성. 김."} -{"name": "김소은", "given": "소은", "family": "김", "initials": "소. 김."} -{"name": "김씨", "family": "김", "suffix": "씨", "initials": "김."} -{"name": "김약수", "given": "약수", "family": "김", "initials": "약. 김."} -{"name": "김연경", "given": "연경", "family": "김", "initials": "연. 김."} -{"name": "김영환", "given": "영환", "family": "김", "initials": "영. 김."} -{"name": "김용완", "given": "용완", "family": "김", "initials": "용. 김."} -{"name": "김응천", "given": "응천", "family": "김", "initials": "응. 김."} -{"name": "김장섭", "given": "장섭", "family": "김", "initials": "장. 김."} -{"name": "김재구", "given": "재구", "family": "김", "initials": "재. 김."} -{"name": "김정은", "given": "정은", "family": "김", "initials": "정. 김."} -{"name": "김종삼", "given": "종삼", "family": "김", "initials": "종. 김."} -{"name": "김지수", "given": "지수", "family": "김", "initials": "지. 김."} -{"name": "김지양", "given": "지양", "family": "김", "initials": "지. 김."} -{"name": "김한민", "given": "한민", "family": "김", "initials": "한. 김."} -{"name": "나익진", "given": "익진", "family": "나", "initials": "익. 나."} -{"name": "남궁", "family": "남궁", "initials": "남."} -{"name": "남궁민수", "given": "민수", "family": "남궁", "ambiguities": ["SEGMENTATION"], "initials": "민. 남."} -{"name": "남궁민수 지훈", "given": "민수", "middle": "지훈", "family": "남궁", "ambiguities": ["SEGMENTATION"], "initials": "민. 지. 남."} -{"name": "남궁민수, 지훈", "given": "지훈", "family": "남궁민수", "initials": "지. 남."} -{"name": "남다름", "given": "다름", "family": "남", "initials": "다. 남."} -{"name": "노유상", "given": "유상", "family": "노", "initials": "유. 노."} -{"name": "도민호", "given": "민호", "family": "도", "initials": "민. 도."} -{"name": "로버트 다우니 주니어", "given": "다우니", "family": "로버트", "suffix": "주니어", "initials": "다. 로."} -{"name": "류효영", "given": "효영", "family": "류", "initials": "효. 류."} -{"name": "마이클·잭슨", "given": "마이클", "family": "잭슨", "initials": "마. 잭."} -{"name": "마틴 킹, MA", "given": "틴", "middle": "킹", "family": "마", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"], "initials": "틴. 킹. 마."} -{"name": "뮐러 케테", "order": "FAMILY_FIRST", "given": "케테", "family": "뮐러", "initials": "케. 뮐."} -{"name": "민규헨리김", "given": "규헨리김", "family": "민", "initials": "규. 민."} -{"name": "민윤기", "given": "윤기", "family": "민", "initials": "윤. 민."} -{"name": "박경애", "given": "경애", "family": "박", "initials": "경. 박."} -{"name": "박경원", "given": "경원", "family": "박", "initials": "경. 박."} -{"name": "박만원", "given": "만원", "family": "박", "initials": "만. 박."} -{"name": "박민지", "given": "민지", "family": "박", "initials": "민. 박."} -{"name": "박성수", "given": "성수", "family": "박", "initials": "성. 박."} -{"name": "박성우", "given": "성우", "family": "박", "initials": "성. 박."} -{"name": "박소현", "order": "FAMILY_FIRST", "given": "소현", "family": "박", "initials": "소. 박."} -{"name": "박시후", "given": "시후", "family": "박", "initials": "시. 박."} -{"name": "박정희", "given": "정희", "family": "박", "initials": "정. 박."} -{"name": "박주영", "given": "주영", "family": "박", "initials": "주. 박."} -{"name": "박지현", "given": "지현", "family": "박", "initials": "지. 박."} -{"name": "박진구", "given": "진구", "family": "박", "initials": "진. 박."} -{"name": "박진영", "given": "진영", "family": "박", "initials": "진. 박."} -{"name": "박형진", "given": "형진", "family": "박", "initials": "형. 박."} -{"name": "방응모", "given": "응모", "family": "방", "initials": "응. 방."} -{"name": "선생님", "family": "선생님", "initials": "선."} -{"name": "선생님, J.씨", "given": "J.", "family": "선생님", "suffix": "씨", "initials": "J. 선."} -{"name": "설기현", "given": "기현", "family": "설", "initials": "기. 설."} -{"name": "소현박", "given": "현박", "family": "소", "initials": "현. 소."} -{"name": "손태곤", "given": "태곤", "family": "손", "initials": "태. 손."} -{"name": "손현주", "given": "현주", "family": "손", "initials": "현. 손."} -{"name": "송대남", "given": "대남", "family": "송", "initials": "대. 송."} -{"name": "슈퇴버 제질리아 해미쉬", "order": "FAMILY_FIRST", "given": "제질리아", "middle": "해미쉬", "family": "슈퇴버", "initials": "제. 해. 슈."} -{"name": "신경림", "given": "경림", "family": "신", "initials": "경. 신."} -{"name": "신도현", "given": "도현", "family": "신", "initials": "도. 신."} -{"name": "신밧드", "given": "밧드", "family": "신", "initials": "밧. 신."} -{"name": "신밧드", "order": "FAMILY_FIRST", "given": "밧드", "family": "신", "initials": "밧. 신."} -{"name": "신용훈", "given": "용훈", "family": "신", "initials": "용. 신."} -{"name": "신춘호", "given": "춘호", "family": "신", "initials": "춘. 신."} -{"name": "신효순", "given": "효순", "family": "신", "initials": "효. 신."} -{"name": "씨", "family": "씨", "initials": "씨."} -{"name": "아키야마 요시히로", "given": "요시히로", "family": "아키야마", "initials": "요. 아."} -{"name": "양 미선", "given": "미선", "family": "양", "initials": "미. 양."} -{"name": "양 지훈", "given": "지훈", "family": "양", "initials": "지. 양."} -{"name": "양 지훈.", "given": "지훈.", "family": "양", "initials": "지. 양."} -{"name": "양. 지훈", "given": "지훈", "family": "양.", "initials": "지. 양."} -{"name": "에이다 코넬리아 세사르 마르틴 폰 볼프 박사", "given": "코넬리아", "middle": "세사르 마르틴 폰 볼프", "family": "에이다", "suffix": "박사", "initials": "코. 세. 마. 폰. 볼. 에."} -{"name": "오정숙", "given": "정숙", "family": "오", "initials": "정. 오."} -{"name": "유명희", "given": "명희", "family": "유", "initials": "명. 유."} -{"name": "유미", "given": "미", "family": "유", "initials": "미. 유."} -{"name": "유미", "order": "FAMILY_FIRST", "given": "미", "family": "유", "initials": "미. 유."} -{"name": "유미강", "given": "미강", "family": "유", "initials": "미. 유."} -{"name": "유영국", "given": "영국", "family": "유", "initials": "영. 유."} -{"name": "육영수", "given": "영수", "family": "육", "initials": "영. 육."} -{"name": "육인수", "given": "인수", "family": "육", "initials": "인. 육."} -{"name": "육지수", "given": "지수", "family": "육", "initials": "지. 육."} -{"name": "윤아정", "given": "아정", "family": "윤", "initials": "아. 윤."} -{"name": "이, J.씨", "given": "J.", "family": "이", "suffix": "씨", "initials": "J. 이."} -{"name": "이, J.씨.", "given": "J.", "family": "이", "suffix": "씨.", "initials": "J. 이."} -{"name": "이강훈", "given": "강훈", "family": "이", "initials": "강. 이."} -{"name": "이광노", "given": "광노", "family": "이", "initials": "광. 이."} -{"name": "이만희", "given": "만희", "family": "이", "initials": "만. 이."} -{"name": "이병기", "given": "병기", "family": "이", "initials": "병. 이."} -{"name": "이병훈", "given": "병훈", "family": "이", "initials": "병. 이."} -{"name": "이보나", "given": "보나", "family": "이", "initials": "보. 이."} -{"name": "이상득", "given": "상득", "family": "이", "initials": "상. 이."} -{"name": "이상익", "given": "상익", "family": "이", "initials": "상. 이."} -{"name": "이소연", "given": "소연", "family": "이", "initials": "소. 이."} -{"name": "이소희", "given": "소희", "family": "이", "initials": "소. 이."} -{"name": "이유빈", "given": "유빈", "family": "이", "initials": "유. 이."} -{"name": "이정희", "given": "정희", "family": "이", "initials": "정. 이."} -{"name": "이진주", "given": "진주", "family": "이", "initials": "진. 이."} -{"name": "이필모", "given": "필모", "family": "이", "initials": "필. 이."} -{"name": "이현만", "given": "현만", "family": "이", "initials": "현. 이."} -{"name": "이호왕", "given": "호왕", "family": "이", "initials": "호. 이."} -{"name": "이희완", "given": "희완", "family": "이", "initials": "희. 이."} -{"name": "임 대규", "given": "대규", "family": "임", "initials": "대. 임."} -{"name": "임정은", "given": "정은", "family": "임", "initials": "정. 임."} -{"name": "장명한", "given": "명한", "family": "장", "initials": "명. 장."} -{"name": "장우현", "given": "우현", "family": "장", "initials": "우. 장."} -{"name": "장원영", "given": "원영", "family": "장", "initials": "원. 장."} -{"name": "장정곤", "given": "정곤", "family": "장", "initials": "정. 장."} -{"name": "장효희", "given": "효희", "family": "장", "initials": "효. 장."} -{"name": "전재규", "given": "재규", "family": "전", "initials": "재. 전."} -{"name": "정동권", "given": "동권", "family": "정", "initials": "동. 정."} -{"name": "정석모", "given": "석모", "family": "정", "initials": "석. 정."} -{"name": "정세균", "given": "세균", "family": "정", "initials": "세. 정."} -{"name": "정순택", "given": "순택", "family": "정", "initials": "순. 정."} -{"name": "정호연", "given": "호연", "family": "정", "initials": "호. 정."} -{"name": "제질리아 해미쉬 슈퇴버", "given": "질리아", "middle": "해미쉬 슈퇴버", "family": "제", "initials": "질. 해. 슈. 제."} -{"name": "조병득", "given": "병득", "family": "조", "initials": "병. 조."} -{"name": "조상현", "given": "상현", "family": "조", "initials": "상. 조."} -{"name": "조세희", "given": "세희", "family": "조", "initials": "세. 조."} -{"name": "조형부", "given": "형부", "family": "조", "initials": "형. 조."} -{"name": "주정균", "given": "정균", "family": "주", "initials": "정. 주."} -{"name": "지훈, 남궁민수", "given": "남궁민수", "family": "지훈", "initials": "남. 지."} -{"name": "차태현", "given": "태현", "family": "차", "initials": "태. 차."} -{"name": "천경자", "given": "경자", "family": "천", "initials": "경. 천."} -{"name": "천병규", "given": "병규", "family": "천", "initials": "병. 천."} -{"name": "최국현", "given": "국현", "family": "최", "initials": "국. 최."} -{"name": "최두환", "given": "두환", "family": "최", "initials": "두. 최."} -{"name": "최상옥", "given": "상옥", "family": "최", "initials": "상. 최."} -{"name": "최영근", "given": "영근", "family": "최", "initials": "영. 최."} -{"name": "최종덕", "given": "종덕", "family": "최", "initials": "종. 최."} -{"name": "최희서", "given": "희서", "family": "최", "initials": "희. 최."} -{"name": "추준석", "given": "준석", "family": "추", "initials": "준. 추."} -{"name": "케테 뮐러", "given": "뮐러", "family": "케테", "initials": "뮐. 케."} -{"name": "폰 볼프 에이다 코넬리아 세사르 마르틴", "order": "FAMILY_FIRST", "given": "볼프", "middle": "에이다 코넬리아 세사르 마르틴", "family": "폰", "initials": "볼. 에. 코. 세. 마. 폰."} -{"name": "폰 볼프 에이다 코넬리아 세사르 마르틴 박사", "order": "FAMILY_FIRST", "given": "볼프", "middle": "에이다 코넬리아 세사르 마르틴", "family": "폰", "suffix": "박사", "initials": "볼. 에. 코. 세. 마. 폰."} -{"name": "하예정", "given": "예정", "family": "하", "initials": "예. 하."} -{"name": "한성숙", "given": "성숙", "family": "한", "initials": "성. 한."} -{"name": "한순철", "given": "순철", "family": "한", "initials": "순. 한."} -{"name": "한지성", "given": "지성", "family": "한", "initials": "지. 한."} -{"name": "허성태", "given": "성태", "family": "허", "initials": "성. 허."} -{"name": "허정구", "given": "정구", "family": "허", "initials": "정. 허."} -{"name": "홍남표", "given": "남표", "family": "홍", "initials": "남. 홍."} -{"name": "홍순옥", "given": "순옥", "family": "홍", "initials": "순. 홍."} -{"name": "황윤호", "given": "윤호", "family": "황", "initials": "윤. 황."} -{"name": "タナカ. John", "given": "タナカ.", "family": "John", "initials": "タ. J."} -{"name": "タロウ·ヤマダ", "given": "タロウ", "family": "ヤマダ", "initials": "タ. ヤ."} -{"name": "マイケル.", "given": "マイケル.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"], "initials": "マ."} -{"name": "ヤマダ タロウ", "given": "ヤマダ", "family": "タロウ", "initials": "ヤ. タ."} +{"name": "〆木 ひろ", "given": "ひろ", "family": "〆木"} +{"name": "〆木 太郎", "given": "太郎", "family": "〆木"} +{"name": "〆木太郎", "family": "〆木太郎"} +{"name": "あ゙い たろう", "given": "たろう", "family": "あ゙い"} +{"name": "さん", "family": "さん"} +{"name": "みなみ", "family": "みなみ"} +{"name": "ア゙イ タロウ", "given": "ア゙イ", "family": "タロウ"} +{"name": "ア゛イ タロウ", "given": "ア゛イ", "family": "タロウ"} +{"name": "アインシュタイン・アルベルト", "order": "FAMILY_FIRST", "given": "アルベルト", "family": "アインシュタイン"} +{"name": "アルベルト・アインシュタイン", "given": "アルベルト", "family": "アインシュタイン"} +{"name": "エリザベス二世", "given": "エリザベス", "suffix": "二世", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"]} +{"name": "ジェニファー・ソフィア・フォン・スミス・ジュニア博士", "given": "ソフィア", "middle": "フォン スミス ジュニア博士", "family": "ジェニファー"} +{"name": "ジョン ・ スミス", "given": "ジョン", "family": "スミス"} +{"name": "セシリア・ローズ・ブラウン", "given": "セシリア", "middle": "ローズ", "family": "ブラウン"} +{"name": "フォン・スミス・ソフィア・ジェニファー", "order": "FAMILY_FIRST", "given": "スミス", "middle": "ソフィア ジェニファー", "family": "フォン"} +{"name": "フォン・スミス・ソフィア・ジェニファー博士", "order": "FAMILY_FIRST", "given": "スミス", "middle": "ソフィア ジェニファー博士", "family": "フォン"} +{"name": "ブラウン・ローズ・セシリア", "order": "FAMILY_FIRST", "given": "ローズ", "middle": "セシリア", "family": "ブラウン"} +{"name": "マイケル", "given": "マイケル", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"]} +{"name": "マイケル", "order": "FAMILY_FIRST", "family": "マイケル", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as given (position)"]} +{"name": "マイケル ア゙イ", "given": "マイケル", "family": "ア゙イ"} +{"name": "マイケル ジャクソン", "given": "マイケル", "family": "ジャクソン"} +{"name": "マイケル.", "given": "マイケル.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"]} +{"name": "マイケル·ジャクソン", "given": "マイケル", "family": "ジャクソン"} +{"name": "マイケル・ジャクソン", "given": "マイケル", "family": "ジャクソン"} +{"name": "ロバート・ダウニー・ジュニア", "given": "ロバート", "family": "ダウニー", "suffix": "ジュニア"} +{"name": "ㄱㄴ 김", "given": "ㄱㄴ", "family": "김", "initials": "ㄱ."} +{"name": "一郎安藤", "family": "一郎安藤"} +{"name": "三橋淳", "family": "三橋淳"} +{"name": "上山輝一", "family": "上山輝一"} +{"name": "中内力", "family": "中内力"} +{"name": "中島 徹", "given": "徹", "family": "中島"} +{"name": "中川龍一", "family": "中川龍一"} +{"name": "亀井三郎", "family": "亀井三郎"} +{"name": "伊豆田莉奈", "family": "伊豆田莉奈"} +{"name": "佐々木 勇人", "given": "勇人", "family": "佐々木"} +{"name": "佐々木 太郎", "given": "太郎", "family": "佐々木"} +{"name": "佐々木謙一郎", "family": "佐々木謙一郎"} +{"name": "佐藤 花子 \"旧姓・田中\" (旧姓 鈴木)", "given": "花子", "family": "佐藤", "nickname": "旧姓 田中", "maiden": "鈴木"} +{"name": "佐藤グレース恵子", "order": "FAMILY_FIRST", "family": "佐藤グレース恵子"} +{"name": "佐藤グレース恵子さん", "order": "FAMILY_FIRST", "family": "佐藤グレース恵子", "suffix": "さん"} +{"name": "佐藤恵子 国会議員", "family": "佐藤恵子", "suffix": "国会議員"} +{"name": "佐藤恵子国会議員", "family": "佐藤恵子", "suffix": "国会議員"} +{"name": "何炅", "family": "何炅"} +{"name": "何瑞麟", "family": "何瑞麟"} +{"name": "俊年杰思陈", "family": "俊年杰思陈"} +{"name": "先生子媚惠仪陈小,太平绅士", "family": "先生子媚惠仪陈小", "suffix": "太平绅士"} +{"name": "先生子媚惠儀陳小,太平紳士", "family": "先生子媚惠儀陳小", "suffix": "太平紳士"} +{"name": "克特·米勒", "given": "克特", "family": "米勒"} +{"name": "内田誠", "family": "内田誠"} +{"name": "内藤博文", "family": "内藤博文"} +{"name": "凯晴", "family": "凯晴"} +{"name": "凯晴", "order": "FAMILY_FIRST", "family": "凯晴"} +{"name": "凱晴", "family": "凱晴"} +{"name": "凱晴", "order": "FAMILY_FIRST", "family": "凱晴"} +{"name": "刘婉婷", "family": "刘婉婷"} +{"name": "刘放", "family": "刘放"} +{"name": "刘旺", "family": "刘旺"} +{"name": "刘相蓉", "family": "刘相蓉"} +{"name": "刘维", "family": "刘维"} +{"name": "前田秀樹", "family": "前田秀樹"} +{"name": "北野誠", "family": "北野誠"} +{"name": "华楠", "family": "华楠"} +{"name": "卫惠林", "family": "卫惠林"} +{"name": "司马相如", "family": "司马相如"} +{"name": "吉尾弘", "family": "吉尾弘"} +{"name": "吉川亨", "family": "吉川亨"} +{"name": "吳·永強·德安", "order": "FAMILY_FIRST", "given": "永強", "middle": "德安", "family": "吳"} +{"name": "吴·永强·德安", "order": "FAMILY_FIRST", "given": "永强", "middle": "德安", "family": "吴"} +{"name": "周美玲", "family": "周美玲"} +{"name": "唐由之", "family": "唐由之"} +{"name": "坂本 龍馬", "given": "龍馬", "family": "坂本"} +{"name": "城戸 四郎", "given": "四郎", "family": "城戸"} +{"name": "堀内 克明", "given": "克明", "family": "堀内"} +{"name": "塞西莉亚·哈米什·施托贝尔", "given": "塞西莉亚", "middle": "哈米什", "family": "施托贝尔"} +{"name": "夏侯惇", "family": "夏侯惇"} +{"name": "夏萍", "family": "夏萍"} +{"name": "多田大介", "family": "多田大介"} +{"name": "大沢衛", "family": "大沢衛"} +{"name": "太田三郎", "family": "太田三郎"} +{"name": "太郎トーマス山田", "family": "太郎トーマス山田"} +{"name": "姚明", "family": "姚明"} +{"name": "威廉 · 莎士比亚", "given": "威廉", "middle": "·", "family": "莎士比亚", "initials": "·."} +{"name": "威廉·莎士比亚", "given": "威廉", "family": "莎士比亚"} +{"name": "威廉·莎士比亚, PhD", "given": "威廉", "family": "莎士比亚", "suffix": "PhD"} +{"name": "威廉·莎士比亚さん", "given": "威廉", "family": "莎士比亚", "suffix": "さん"} +{"name": "威廉・莎士比亚", "given": "莎士比亚", "family": "威廉"} +{"name": "孙悦", "family": "孙悦"} +{"name": "孟建柱", "family": "孟建柱"} +{"name": "宇瀚", "family": "宇瀚"} +{"name": "宇瀚", "order": "FAMILY_FIRST", "family": "宇瀚"} +{"name": "安东尼·陈志明", "given": "安东尼", "family": "陈志明"} +{"name": "安倍なつみ", "family": "安倍なつみ"} +{"name": "安怡张", "family": "安怡张"} +{"name": "安藤一郎", "order": "FAMILY_FIRST", "family": "安藤一郎"} +{"name": "安達禎", "family": "安達禎"} +{"name": "宋楠", "family": "宋楠"} +{"name": "家豪明德林", "family": "家豪明德林"} +{"name": "小冯·布鲁赫·艾达·科妮莉亚·塞萨尔·马丁·博士教授", "order": "FAMILY_FIRST", "given": "布鲁赫", "middle": "艾达 科妮莉亚 塞萨尔 马丁", "family": "小冯", "suffix": "博士 教授"} +{"name": "小彭德威东升议员先生", "order": "FAMILY_FIRST", "family": "小彭德威东升议员", "suffix": "先生"} +{"name": "小德威东升彭议员先生", "family": "小德威东升彭议员", "suffix": "先生"} +{"name": "小明", "family": "小明"} +{"name": "小杉 啓太", "given": "啓太", "family": "小杉"} +{"name": "小林宏", "family": "小林宏"} +{"name": "小林由佳", "family": "小林由佳"} +{"name": "小柳俊一", "family": "小柳俊一"} +{"name": "小清水 亜美", "given": "亜美", "family": "小清水"} +{"name": "小艾达·科妮莉亚·塞萨尔·马丁·冯·布鲁赫博士教授", "given": "小艾达", "middle": "科妮莉亚 塞萨尔 马丁 冯", "family": "布鲁赫博士", "suffix": "教授"} +{"name": "山田 ア゙イ", "given": "ア゙イ", "family": "山田"} +{"name": "山田 エミ", "given": "エミ", "family": "山田"} +{"name": "山田 太郎", "given": "太郎", "family": "山田"} +{"name": "山田 太郎 (マイケル・ジャクソン)", "given": "太郎", "family": "山田", "nickname": "マイケル ジャクソン"} +{"name": "山田 花子 旧姓 佐藤", "given": "花子", "family": "山田", "maiden": "佐藤"} +{"name": "山田 花子 旧姓:佐藤", "given": "山田", "middle": "花子", "family": "旧姓:佐藤"} +{"name": "山田 花子(旧姓 佐藤)", "given": "花子", "family": "山田", "maiden": "佐藤"} +{"name": "山田 「タロー」 タロウ", "given": "タロウ", "family": "山田", "nickname": "タロー"} +{"name": "山田 タロウ", "given": "タロウ", "family": "山田"} +{"name": "山田 ダイスケ", "given": "ダイスケ", "family": "山田"} +{"name": "山田 ペーター", "given": "ペーター", "family": "山田"} +{"name": "山田 太郎", "given": "太郎", "family": "山田"} +{"name": "山田「タロ」太郎", "given": "太郎", "family": "山田", "nickname": "タロ"} +{"name": "山田トーマス太郎", "order": "FAMILY_FIRST", "family": "山田トーマス太郎"} +{"name": "山田太郎様", "family": "山田太郎", "suffix": "様"} +{"name": "山田花子 旧姓 佐藤", "family": "山田花子", "maiden": "佐藤"} +{"name": "山田「タロー」太郎", "given": "太郎", "family": "山田", "nickname": "タロー"} +{"name": "山田タロウ", "family": "山田タロウ"} +{"name": "岡正雄", "family": "岡正雄"} +{"name": "岸田文雄衆議院議員", "family": "岸田文雄衆議院", "suffix": "議員"} +{"name": "崔晓桐", "family": "崔晓桐"} +{"name": "布鲁赫·艾达·科妮莉亚·塞萨尔·马丁·冯", "order": "FAMILY_FIRST", "given": "艾达", "middle": "科妮莉亚 塞萨尔 马丁 冯", "family": "布鲁赫"} +{"name": "平賀淳", "family": "平賀淳"} +{"name": "引地良一", "family": "引地良一"} +{"name": "张伟", "family": "张伟"} +{"name": "张安怡", "order": "FAMILY_FIRST", "family": "张安怡"} +{"name": "张简", "family": "张简"} +{"name": "张翰", "family": "张翰"} +{"name": "张雅婷", "order": "FAMILY_FIRST", "family": "张雅婷"} +{"name": "張瑞", "family": "張瑞"} +{"name": "張雅婷", "order": "FAMILY_FIRST", "family": "張雅婷"} +{"name": "張韶涵", "family": "張韶涵"} +{"name": "彭孟緝", "family": "彭孟緝"} +{"name": "彭德威 议员", "family": "彭德威", "suffix": "议员"} +{"name": "彭德威东升", "order": "FAMILY_FIRST", "family": "彭德威东升"} +{"name": "怡君達印馮·陳二世博士,醫學博士", "given": "怡君達印馮", "family": "陳二世博士", "suffix": "醫學博士"} +{"name": "恵子グレース佐藤ジュニアさん", "family": "恵子グレース佐藤ジュニア", "suffix": "さん"} +{"name": "慎太郎", "family": "慎太郎"} +{"name": "慎太郎", "order": "FAMILY_FIRST", "family": "慎太郎"} +{"name": "揖斐章", "family": "揖斐章"} +{"name": "教授·怡君·达印·陈·陈·小,博士", "given": "教授", "middle": "怡君 达印 陈 陈", "family": "小", "suffix": "博士"} +{"name": "教授·怡君·達印·陳·陳·小,博士", "given": "教授", "middle": "怡君 達印 陳 陳", "family": "小", "suffix": "博士"} +{"name": "文傑", "family": "文傑"} +{"name": "文傑", "order": "FAMILY_FIRST", "family": "文傑"} +{"name": "文强", "family": "文强"} +{"name": "文杰", "family": "文杰"} +{"name": "文杰", "order": "FAMILY_FIRST", "family": "文杰"} +{"name": "方豪", "family": "方豪"} +{"name": "施托贝尔·塞西莉亚·哈米什", "order": "FAMILY_FIRST", "given": "塞西莉亚", "middle": "哈米什", "family": "施托贝尔"} +{"name": "木内 信夫", "given": "信夫", "family": "木内"} +{"name": "朱世英", "family": "朱世英"} +{"name": "朱旭", "family": "朱旭"} +{"name": "朱霖", "family": "朱霖"} +{"name": "朴璐美", "family": "朴璐美"} +{"name": "李俊賢", "family": "李俊賢"} +{"name": "李博", "family": "李博"} +{"name": "李宗文", "family": "李宗文"} +{"name": "李影", "family": "李影"} +{"name": "李正中", "family": "李正中"} +{"name": "李瞻", "family": "李瞻"} +{"name": "李翔", "family": "李翔"} +{"name": "李诗沣", "family": "李诗沣"} +{"name": "李部長", "family": "李部長"} +{"name": "村田喜一", "family": "村田喜一"} +{"name": "杨扬", "family": "杨扬"} +{"name": "杨旭", "family": "杨旭"} +{"name": "東郷文彦", "family": "東郷文彦"} +{"name": "林 力", "given": "力", "family": "林"} +{"name": "林國華", "family": "林國華"} +{"name": "林家豪明德", "order": "FAMILY_FIRST", "family": "林家豪明德"} +{"name": "柯洁", "family": "柯洁"} +{"name": "柴山景綱", "family": "柴山景綱"} +{"name": "桃田賢斗", "family": "桃田賢斗"} +{"name": "桜井昌司", "family": "桜井昌司"} +{"name": "森卯一", "family": "森卯一"} +{"name": "毛 泽东", "given": "泽东", "family": "毛"} +{"name": "毛 泽东 Dr.", "title": "Dr.", "given": "泽东", "family": "毛"} +{"name": "毛 김", "given": "毛", "family": "김"} +{"name": "毛·泽东", "given": "毛", "family": "泽东"} +{"name": "毛泽东", "family": "毛泽东"} +{"name": "毛泽东 MA", "given": "毛泽东", "family": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "M.", "capitalized": "毛泽东 Ma"} +{"name": "毛泽东, MA", "given": "MA", "family": "毛泽东", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "M.", "capitalized": "Ma 毛泽东"} +{"name": "永強·德安·吳", "given": "永強", "middle": "德安", "family": "吳"} +{"name": "永强·德安·吴", "given": "永强", "middle": "德安", "family": "吴"} +{"name": "永翘·黄", "given": "永翘", "family": "黄"} +{"name": "永翹·黃", "given": "永翹", "family": "黃"} +{"name": "汪洋", "family": "汪洋"} +{"name": "汪顺", "family": "汪顺"} +{"name": "沈鵬", "family": "沈鵬"} +{"name": "河合亨", "family": "河合亨"} +{"name": "渋谷健一", "family": "渋谷健一"} +{"name": "湯浅浩", "family": "湯浅浩"} +{"name": "牧野虎雄", "family": "牧野虎雄"} +{"name": "王 小 明", "given": "小", "middle": "明", "family": "王"} +{"name": "王 小明", "given": "小明", "family": "王"} +{"name": "王·Smith", "given": "王·Smith", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"]} +{"name": "王·雅婷", "order": "FAMILY_FIRST", "given": "雅婷", "family": "王"} +{"name": "王·雅婷·婷婷", "order": "FAMILY_FIRST", "given": "雅婷", "middle": "婷婷", "family": "王"} +{"name": "王先生", "family": "王", "suffix": "先生"} +{"name": "王先生, V.", "given": "V.", "family": "王", "suffix": "先生", "initials": "V."} +{"name": "王君", "family": "王君"} +{"name": "王小明 先生", "family": "王小明", "suffix": "先生"} +{"name": "王小明先生", "family": "王小明", "suffix": "先生"} +{"name": "王氏", "family": "王氏"} +{"name": "王鑫", "family": "王鑫"} +{"name": "王镇", "family": "王镇"} +{"name": "王雅婷婷婷", "order": "FAMILY_FIRST", "family": "王雅婷婷婷"} +{"name": "王雅婷婷婷二世議員", "order": "FAMILY_FIRST", "family": "王雅婷婷婷二世", "suffix": "議員"} +{"name": "王雅婷,議員", "family": "王雅婷", "suffix": "議員"} +{"name": "王雪莹", "family": "王雪莹"} +{"name": "田中 さん", "family": "田中", "suffix": "さん"} +{"name": "田中 副社長", "given": "副", "family": "田中", "suffix": "社長"} +{"name": "田中 太郎 旧姓 佐藤 MA", "given": "太郎", "family": "田中", "suffix": "MA", "maiden": "佐藤", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as maiden (declared)"]} +{"name": "田中 太郎 様", "given": "太郎", "family": "田中", "suffix": "様"} +{"name": "田中 太郎, MA", "given": "太郎", "family": "田中", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"]} +{"name": "田中 殿", "family": "田中", "suffix": "殿"} +{"name": "田中 社長", "family": "田中", "suffix": "社長"} +{"name": "田中, 太郎 MA", "given": "太郎", "family": "田中", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as middle (declared)"]} +{"name": "田中, 太郎さん", "given": "太郎", "family": "田中", "suffix": "さん"} +{"name": "田中.", "family": "田中."} +{"name": "田中. 太郎", "given": "太郎", "family": "田中."} +{"name": "田中、太郎", "given": "田中、太郎", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"]} +{"name": "田中『ハナ』花子", "given": "花子", "family": "田中", "nickname": "ハナ"} +{"name": "田中さん", "family": "田中", "suffix": "さん"} +{"name": "田中さん II", "family": "田中", "suffix": "さん II"} +{"name": "田中さん V.", "given": "田中さん", "family": "V.", "initials": "V."} +{"name": "田中さん v", "given": "田中さん", "family": "v", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "v.", "capitalized": "田中さん V"} +{"name": "田中さん 様.", "family": "田中", "suffix": "さん 様."} +{"name": "田中さん, Dr.", "title": "Dr.", "family": "田中さん"} +{"name": "田中さん, Ph. D.", "family": "田中", "suffix": "さん, Ph. D."} +{"name": "田中さん, PhD", "family": "田中", "suffix": "さん, PhD"} +{"name": "田中さん, V.", "given": "V.", "family": "田中", "suffix": "さん", "initials": "V."} +{"name": "田中さん, 太郎", "given": "太郎", "family": "田中さん"} +{"name": "田中さん, 様.", "family": "田中", "suffix": "さん, 様."} +{"name": "田中さん.", "family": "田中", "suffix": "さん."} +{"name": "田中さん., V.", "given": "V.", "family": "田中", "suffix": "さん.", "initials": "V."} +{"name": "田中医学博士", "family": "田中", "suffix": "医学博士"} +{"name": "田中博士", "family": "田中博士"} +{"name": "田中社長", "family": "田中", "suffix": "社長"} +{"name": "田中部長", "family": "田中部長"} +{"name": "白文正", "family": "白文正"} +{"name": "石智勇", "family": "石智勇"} +{"name": "秦彦三郎", "family": "秦彦三郎"} +{"name": "端山 忠左衛門", "given": "忠左衛門", "family": "端山"} +{"name": "米勒·克特", "order": "FAMILY_FIRST", "given": "克特", "family": "米勒"} +{"name": "米川信夫", "family": "米川信夫"} +{"name": "罗建文", "family": "罗建文"} +{"name": "罗隆基", "family": "罗隆基"} +{"name": "胡英", "family": "胡英"} +{"name": "茅祖權", "family": "茅祖權"} +{"name": "草刈潤", "family": "草刈潤"} +{"name": "荒木茂", "family": "荒木茂"} +{"name": "葉克強", "family": "葉克強"} +{"name": "葉陶", "family": "葉陶"} +{"name": "蔡国强", "family": "蔡国强"} +{"name": "蔡桂英", "family": "蔡桂英"} +{"name": "蔡金生", "family": "蔡金生"} +{"name": "蔣經國", "family": "蔣經國"} +{"name": "藤井旭", "family": "藤井旭"} +{"name": "藤田信雄", "family": "藤田信雄"} +{"name": "蘇貞昌", "family": "蘇貞昌"} +{"name": "詹桓", "family": "詹桓"} +{"name": "諫山博", "family": "諫山博"} +{"name": "諸葛亮", "family": "諸葛亮"} +{"name": "謝暉", "family": "謝暉"} +{"name": "谢文清", "family": "谢文清"} +{"name": "趙小蘭", "family": "趙小蘭"} +{"name": "辛巴达", "family": "辛巴达"} +{"name": "辛巴达", "order": "FAMILY_FIRST", "family": "辛巴达"} +{"name": "近藤平三郎", "family": "近藤平三郎"} +{"name": "遠藤晴", "family": "遠藤晴"} +{"name": "邓志伟", "family": "邓志伟"} +{"name": "邓逸凡", "family": "邓逸凡"} +{"name": "邵毓麟", "family": "邵毓麟"} +{"name": "郑爽", "family": "郑爽"} +{"name": "郭丹", "family": "郭丹"} +{"name": "郭靜", "family": "郭靜"} +{"name": "鈴木亀蔵", "family": "鈴木亀蔵"} +{"name": "鎌田 弥彦", "given": "弥彦", "family": "鎌田"} +{"name": "钟离小凤", "family": "钟离小凤"} +{"name": "陈·怡君·达印", "order": "FAMILY_FIRST", "given": "怡君", "middle": "达印", "family": "陈"} +{"name": "陈·陈·怡君·教授,小·达印·博士", "order": "FAMILY_FIRST", "given": "小", "middle": "达印", "family": "陈 陈 怡君", "suffix": "教授, 博士"} +{"name": "陈俊年杰思", "order": "FAMILY_FIRST", "family": "陈俊年杰思"} +{"name": "陈凯歌", "family": "陈凯歌"} +{"name": "陈子媚先生,小惠仪太平绅士", "order": "FAMILY_FIRST", "given": "小惠仪", "family": "陈子媚先生", "suffix": "太平绅士"} +{"name": "陈子媚惠仪", "order": "FAMILY_FIRST", "family": "陈子媚惠仪"} +{"name": "陈静", "family": "陈静"} +{"name": "陳·怡君·達印", "order": "FAMILY_FIRST", "given": "怡君", "middle": "達印", "family": "陳"} +{"name": "陳·陳·怡君·教授,小·達印·博士", "order": "FAMILY_FIRST", "given": "小", "middle": "達印", "family": "陳 陳 怡君", "suffix": "教授, 博士"} +{"name": "陳俊傑", "family": "陳俊傑"} +{"name": "陳婷", "family": "陳婷"} +{"name": "陳子媚 二世", "family": "陳子媚", "suffix": "二世"} +{"name": "陳子媚先生,小惠儀太平紳士", "order": "FAMILY_FIRST", "given": "小惠儀", "family": "陳子媚先生", "suffix": "太平紳士"} +{"name": "陳子媚惠儀", "order": "FAMILY_FIRST", "family": "陳子媚惠儀"} +{"name": "陳怡君 二世", "family": "陳怡君", "suffix": "二世"} +{"name": "陳怡君二世", "family": "陳怡君", "suffix": "二世"} +{"name": "陳怡君,醫學博士", "family": "陳怡君", "suffix": "醫學博士"} +{"name": "陳明忠", "family": "陳明忠"} +{"name": "雅婷", "family": "雅婷"} +{"name": "雅婷", "order": "FAMILY_FIRST", "family": "雅婷"} +{"name": "雅婷婷婷王", "family": "雅婷婷婷王"} +{"name": "雅婷婷婷王二世先生,議員", "family": "雅婷婷婷王二世", "suffix": "先生, 議員"} +{"name": "雅婷张", "family": "雅婷张"} +{"name": "雅婷張", "family": "雅婷張"} +{"name": "雅婷王", "family": "雅婷王"} +{"name": "韩光", "family": "韩光"} +{"name": "韩旭", "family": "韩旭"} +{"name": "韩红", "family": "韩红"} +{"name": "馮·陳·怡君·達印", "order": "FAMILY_FIRST", "given": "陳", "middle": "怡君 達印", "family": "馮"} +{"name": "馮·陳·怡君·達印·二世醫學博士", "order": "FAMILY_FIRST", "given": "陳", "middle": "怡君 達印", "family": "馮", "suffix": "二世 醫學博士"} +{"name": "馮定國", "family": "馮定國"} +{"name": "駒井玲子", "family": "駒井玲子"} +{"name": "马丁·路德·金", "given": "马丁", "middle": "路德", "family": "金"} +{"name": "马丁·路德·金씨", "given": "马丁", "middle": "路德", "family": "金", "suffix": "씨"} +{"name": "高橋 みなみ", "given": "みなみ", "family": "高橋"} +{"name": "高橋みなみ", "family": "高橋みなみ"} +{"name": "高橋・一郎", "given": "一郎", "family": "高橋"} +{"name": "高橋一郎", "family": "高橋一郎"} +{"name": "高橋章", "family": "高橋章"} +{"name": "高田栄二", "family": "高田栄二"} +{"name": "魏曦", "family": "魏曦"} +{"name": "鵜殿", "family": "鵜殿"} +{"name": "黃·永翹", "order": "FAMILY_FIRST", "given": "永翹", "family": "黃"} +{"name": "黄·永翘", "order": "FAMILY_FIRST", "given": "永翘", "family": "黄"} +{"name": "黄乃", "family": "黄乃"} +{"name": "黄浩", "family": "黄浩"} +{"name": "黎智英", "family": "黎智英"} +{"name": "강명순", "given": "명순", "family": "강"} +{"name": "강유미", "order": "FAMILY_FIRST", "given": "유미", "family": "강"} +{"name": "강혜원", "given": "혜원", "family": "강"} +{"name": "고 상돈", "given": "상돈", "family": "고"} +{"name": "고기봉", "given": "기봉", "family": "고"} +{"name": "고요한", "given": "요한", "family": "고"} +{"name": "공옥진", "given": "옥진", "family": "공"} +{"name": "권재진", "given": "재진", "family": "권"} +{"name": "권중동", "given": "중동", "family": "권"} +{"name": "김 v", "given": "김", "family": "v", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: generation as suffix (vocabulary)"], "initials": "v.", "capitalized": "김 V"} +{"name": "김 민준", "given": "민준", "family": "김"} +{"name": "김, 민준", "given": "민준", "family": "김"} +{"name": "김, 민준 MA", "given": "민준", "family": "김", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as middle (declared)"]} +{"name": "김, 민준씨", "given": "민준", "family": "김", "suffix": "씨"} +{"name": "김, 민준씨 (Jimmy)", "given": "민준", "family": "김", "suffix": "씨", "nickname": "Jimmy"} +{"name": "김. 민준", "given": "민준", "family": "김."} +{"name": "김゙민준", "given": "김゙민준", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"]} +{"name": "김경애", "given": "경애", "family": "김"} +{"name": "김계원", "given": "계원", "family": "김"} +{"name": "김기영", "given": "기영", "family": "김"} +{"name": "김민규헨리", "order": "FAMILY_FIRST", "given": "민규헨리", "family": "김"} +{"name": "김민준", "given": "민준", "family": "김"} +{"name": "김민준 John", "given": "김", "middle": "민준", "family": "John", "initials": "J."} +{"name": "김민준 님", "given": "민준", "family": "김", "suffix": "님"} +{"name": "김민준 박, MA Jones", "given": "MA", "middle": "Jones", "family": "김민준 박", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: credential as suffix (vocabulary)"], "initials": "M. J.", "capitalized_force": "Ma Jones 김민준 박"} +{"name": "김민준 박, X.Y.Z.", "given": "민준", "middle": "박", "family": "김", "suffix": "X.Y.Z."} +{"name": "김민준 박사", "given": "민준", "family": "김", "suffix": "박사"} +{"name": "김민준 박사 씨", "given": "민준", "family": "김", "suffix": "박사 씨"} +{"name": "김민준 박사님", "given": "민준", "family": "김", "suffix": "박사님"} +{"name": "김민준 씨", "given": "민준", "family": "김", "suffix": "씨"} +{"name": "김민준 씨.", "given": "민준", "family": "김", "suffix": "씨."} +{"name": "김민준 씨。", "given": "민준", "family": "김", "suffix": "씨。"} +{"name": "김민준 씨.", "given": "민준", "family": "김", "suffix": "씨."} +{"name": "김민준 씨。", "given": "민준", "family": "김", "suffix": "씨。"} +{"name": "김민준 양", "given": "민준", "family": "김", "suffix": "양"} +{"name": "김민준 양.", "given": "민준", "family": "김", "suffix": "양."} +{"name": "김민준, 씨", "family": "김민준", "suffix": "씨"} +{"name": "김민준, 씨.", "family": "김민준", "suffix": "씨."} +{"name": "김민준.", "given": "민준.", "family": "김"} +{"name": "김민준. 지훈", "given": "민준.", "middle": "지훈", "family": "김"} +{"name": "김민준님", "given": "민준", "family": "김", "suffix": "님"} +{"name": "김민준박사님", "given": "민준", "family": "김", "suffix": "박사님"} +{"name": "김민준씨", "given": "민준", "family": "김", "suffix": "씨"} +{"name": "김민준씨 (Jimmy)", "given": "민준", "family": "김", "suffix": "씨", "nickname": "Jimmy"} +{"name": "김민준씨 Jr.", "given": "민준", "family": "김", "suffix": "씨 Jr."} +{"name": "김민준씨, J.씨", "family": "김민준", "suffix": "씨, J.씨"} +{"name": "김민준씨, MA PhD", "family": "김민준", "suffix": "씨, MA PhD"} +{"name": "김민준씨, V.", "given": "V.", "family": "김민준", "suffix": "씨", "initials": "V."} +{"name": "김민준씨.", "given": "민준", "family": "김", "suffix": "씨."} +{"name": "김민준씨., J.씨", "family": "김민준", "suffix": "씨., J.씨"} +{"name": "김병관", "given": "병관", "family": "김"} +{"name": "김상철", "given": "상철", "family": "김"} +{"name": "김선생님", "family": "김", "suffix": "선생님"} +{"name": "김선영", "given": "선영", "family": "김"} +{"name": "김성혜", "given": "성혜", "family": "김"} +{"name": "김성훈", "given": "성훈", "family": "김"} +{"name": "김소은", "given": "소은", "family": "김"} +{"name": "김씨", "family": "김", "suffix": "씨"} +{"name": "김약수", "given": "약수", "family": "김"} +{"name": "김연경", "given": "연경", "family": "김"} +{"name": "김영환", "given": "영환", "family": "김"} +{"name": "김용완", "given": "용완", "family": "김"} +{"name": "김응천", "given": "응천", "family": "김"} +{"name": "김장섭", "given": "장섭", "family": "김"} +{"name": "김재구", "given": "재구", "family": "김"} +{"name": "김정은", "given": "정은", "family": "김"} +{"name": "김종삼", "given": "종삼", "family": "김"} +{"name": "김지수", "given": "지수", "family": "김"} +{"name": "김지양", "given": "지양", "family": "김"} +{"name": "김한민", "given": "한민", "family": "김"} +{"name": "나익진", "given": "익진", "family": "나"} +{"name": "남궁", "family": "남궁"} +{"name": "남궁민수", "given": "민수", "family": "남궁", "ambiguities": ["SEGMENTATION"]} +{"name": "남궁민수 지훈", "given": "민수", "middle": "지훈", "family": "남궁", "ambiguities": ["SEGMENTATION"]} +{"name": "남궁민수, 지훈", "given": "지훈", "family": "남궁민수"} +{"name": "남다름", "given": "다름", "family": "남"} +{"name": "노유상", "given": "유상", "family": "노"} +{"name": "도민호", "given": "민호", "family": "도"} +{"name": "로버트 다우니 주니어", "given": "다우니", "family": "로버트", "suffix": "주니어"} +{"name": "류효영", "given": "효영", "family": "류"} +{"name": "마이클·잭슨", "given": "마이클", "family": "잭슨"} +{"name": "마틴 킹, MA", "given": "틴", "middle": "킹", "family": "마", "suffix": "MA", "ambiguities": ["SUFFIX_OR_NAME"], "alternatives": ["SUFFIX_OR_NAME: name as given (declared)"]} +{"name": "뮐러 케테", "order": "FAMILY_FIRST", "given": "케테", "family": "뮐러"} +{"name": "민규헨리김", "given": "규헨리김", "family": "민"} +{"name": "민윤기", "given": "윤기", "family": "민"} +{"name": "박경애", "given": "경애", "family": "박"} +{"name": "박경원", "given": "경원", "family": "박"} +{"name": "박만원", "given": "만원", "family": "박"} +{"name": "박민지", "given": "민지", "family": "박"} +{"name": "박성수", "given": "성수", "family": "박"} +{"name": "박성우", "given": "성우", "family": "박"} +{"name": "박소현", "order": "FAMILY_FIRST", "given": "소현", "family": "박"} +{"name": "박시후", "given": "시후", "family": "박"} +{"name": "박정희", "given": "정희", "family": "박"} +{"name": "박주영", "given": "주영", "family": "박"} +{"name": "박지현", "given": "지현", "family": "박"} +{"name": "박진구", "given": "진구", "family": "박"} +{"name": "박진영", "given": "진영", "family": "박"} +{"name": "박형진", "given": "형진", "family": "박"} +{"name": "방응모", "given": "응모", "family": "방"} +{"name": "선생님", "family": "선생님"} +{"name": "선생님, J.씨", "given": "J.", "family": "선생님", "suffix": "씨", "initials": "J."} +{"name": "설기현", "given": "기현", "family": "설"} +{"name": "소현박", "given": "현박", "family": "소"} +{"name": "손태곤", "given": "태곤", "family": "손"} +{"name": "손현주", "given": "현주", "family": "손"} +{"name": "송대남", "given": "대남", "family": "송"} +{"name": "슈퇴버 제질리아 해미쉬", "order": "FAMILY_FIRST", "given": "제질리아", "middle": "해미쉬", "family": "슈퇴버"} +{"name": "신경림", "given": "경림", "family": "신"} +{"name": "신도현", "given": "도현", "family": "신"} +{"name": "신밧드", "given": "밧드", "family": "신"} +{"name": "신밧드", "order": "FAMILY_FIRST", "given": "밧드", "family": "신"} +{"name": "신용훈", "given": "용훈", "family": "신"} +{"name": "신춘호", "given": "춘호", "family": "신"} +{"name": "신효순", "given": "효순", "family": "신"} +{"name": "씨", "family": "씨"} +{"name": "아키야마 요시히로", "given": "요시히로", "family": "아키야마"} +{"name": "양 미선", "given": "미선", "family": "양"} +{"name": "양 지훈", "given": "지훈", "family": "양"} +{"name": "양 지훈.", "given": "지훈.", "family": "양"} +{"name": "양. 지훈", "given": "지훈", "family": "양."} +{"name": "에이다 코넬리아 세사르 마르틴 폰 볼프 박사", "given": "코넬리아", "middle": "세사르 마르틴 폰 볼프", "family": "에이다", "suffix": "박사"} +{"name": "오정숙", "given": "정숙", "family": "오"} +{"name": "유명희", "given": "명희", "family": "유"} +{"name": "유미", "given": "미", "family": "유"} +{"name": "유미", "order": "FAMILY_FIRST", "given": "미", "family": "유"} +{"name": "유미강", "given": "미강", "family": "유"} +{"name": "유영국", "given": "영국", "family": "유"} +{"name": "육영수", "given": "영수", "family": "육"} +{"name": "육인수", "given": "인수", "family": "육"} +{"name": "육지수", "given": "지수", "family": "육"} +{"name": "윤아정", "given": "아정", "family": "윤"} +{"name": "이, J.씨", "given": "J.", "family": "이", "suffix": "씨", "initials": "J."} +{"name": "이, J.씨.", "given": "J.", "family": "이", "suffix": "씨.", "initials": "J."} +{"name": "이강훈", "given": "강훈", "family": "이"} +{"name": "이광노", "given": "광노", "family": "이"} +{"name": "이만희", "given": "만희", "family": "이"} +{"name": "이병기", "given": "병기", "family": "이"} +{"name": "이병훈", "given": "병훈", "family": "이"} +{"name": "이보나", "given": "보나", "family": "이"} +{"name": "이상득", "given": "상득", "family": "이"} +{"name": "이상익", "given": "상익", "family": "이"} +{"name": "이소연", "given": "소연", "family": "이"} +{"name": "이소희", "given": "소희", "family": "이"} +{"name": "이유빈", "given": "유빈", "family": "이"} +{"name": "이정희", "given": "정희", "family": "이"} +{"name": "이진주", "given": "진주", "family": "이"} +{"name": "이필모", "given": "필모", "family": "이"} +{"name": "이현만", "given": "현만", "family": "이"} +{"name": "이호왕", "given": "호왕", "family": "이"} +{"name": "이희완", "given": "희완", "family": "이"} +{"name": "임 대규", "given": "대규", "family": "임"} +{"name": "임정은", "given": "정은", "family": "임"} +{"name": "장명한", "given": "명한", "family": "장"} +{"name": "장우현", "given": "우현", "family": "장"} +{"name": "장원영", "given": "원영", "family": "장"} +{"name": "장정곤", "given": "정곤", "family": "장"} +{"name": "장효희", "given": "효희", "family": "장"} +{"name": "전재규", "given": "재규", "family": "전"} +{"name": "정동권", "given": "동권", "family": "정"} +{"name": "정석모", "given": "석모", "family": "정"} +{"name": "정세균", "given": "세균", "family": "정"} +{"name": "정순택", "given": "순택", "family": "정"} +{"name": "정호연", "given": "호연", "family": "정"} +{"name": "제질리아 해미쉬 슈퇴버", "given": "질리아", "middle": "해미쉬 슈퇴버", "family": "제"} +{"name": "조병득", "given": "병득", "family": "조"} +{"name": "조상현", "given": "상현", "family": "조"} +{"name": "조세희", "given": "세희", "family": "조"} +{"name": "조형부", "given": "형부", "family": "조"} +{"name": "주정균", "given": "정균", "family": "주"} +{"name": "지훈, 남궁민수", "given": "남궁민수", "family": "지훈"} +{"name": "차태현", "given": "태현", "family": "차"} +{"name": "천경자", "given": "경자", "family": "천"} +{"name": "천병규", "given": "병규", "family": "천"} +{"name": "최국현", "given": "국현", "family": "최"} +{"name": "최두환", "given": "두환", "family": "최"} +{"name": "최상옥", "given": "상옥", "family": "최"} +{"name": "최영근", "given": "영근", "family": "최"} +{"name": "최종덕", "given": "종덕", "family": "최"} +{"name": "최희서", "given": "희서", "family": "최"} +{"name": "추준석", "given": "준석", "family": "추"} +{"name": "케테 뮐러", "given": "뮐러", "family": "케테"} +{"name": "폰 볼프 에이다 코넬리아 세사르 마르틴", "order": "FAMILY_FIRST", "given": "볼프", "middle": "에이다 코넬리아 세사르 마르틴", "family": "폰"} +{"name": "폰 볼프 에이다 코넬리아 세사르 마르틴 박사", "order": "FAMILY_FIRST", "given": "볼프", "middle": "에이다 코넬리아 세사르 마르틴", "family": "폰", "suffix": "박사"} +{"name": "하예정", "given": "예정", "family": "하"} +{"name": "한성숙", "given": "성숙", "family": "한"} +{"name": "한순철", "given": "순철", "family": "한"} +{"name": "한지성", "given": "지성", "family": "한"} +{"name": "허성태", "given": "성태", "family": "허"} +{"name": "허정구", "given": "정구", "family": "허"} +{"name": "홍남표", "given": "남표", "family": "홍"} +{"name": "홍순옥", "given": "순옥", "family": "홍"} +{"name": "황윤호", "given": "윤호", "family": "황"} +{"name": "タナカ. John", "given": "タナカ.", "family": "John", "initials": "J."} +{"name": "タロウ·ヤマダ", "given": "タロウ", "family": "ヤマダ"} +{"name": "マイケル.", "given": "マイケル.", "ambiguities": ["GIVEN_OR_FAMILY"], "alternatives": ["GIVEN_OR_FAMILY: name as family (position)"]} +{"name": "ヤマダ タロウ", "given": "ヤマダ", "family": "タロウ"}