description: Returns a boolean tensor indicating which source and target spans overlap.
Returns a boolean tensor indicating which source and target spans overlap.
text.span_overlaps(
source_start,
source_limit,
target_start,
target_limit,
contains=False,
contained_by=False,
partial_overlap=False,
name=None
)
The source and target spans are specified using B+1 dimensional tensors,
with B>=0 batch dimensions followed by a final dimension that lists the
span offsets for each span in the batch:
- The
ith source span in batchb1...bBstarts atsource_start[b1...bB, i](inclusive), and extends to just beforesource_limit[b1...bB, i](exclusive). - The
jth target span in batchb1...bBstarts attarget_start[b1...bB, j](inclusive), and extends to just beforetarget_limit[b1...bB, j](exclusive).
result[b1...bB, i, j] is true if the ith source span overlaps with the
jth target span in batch b1...bB, where a source span overlaps a target
span if any of the following are true:
- The spans are identical.
containsis true, and the source span contains the target span.contained_byis true, and the source span is contained by the target span.partial_overlapis true, and there is a non-zero overlap between the source span and the target span.
Given the following source and target spans (with no batch dimensions):
>>> # 0 5 10 15 20 25 30 35 40
>>> # |====|====|====|====|====|====|====|====|
>>> # Source: [-0-] [-1-] [2] [-3-][-4-][-5-]
>>> # Target: [-0-][-1-] [-2-] [3] [-4-][-5-]
>>> # |====|====|====|====|====|====|====|====|
>>> source_start = [0, 10, 16, 20, 25, 30]
>>> source_limit = [5, 15, 19, 25, 30, 35]
>>> target_start = [0, 5, 15, 21, 27, 31]
>>> target_limit = [5, 10, 20, 24, 32, 37]
result[i, j] will be true at the following locations:
* `[0, 0]` (always)
* `[2, 2]` (if contained_by=True or partial_overlaps=True)
* `[3, 3]` (if contains=True or partial_overlaps=True)
* `[4, 4]` (if partial_overlaps=True)
* `[5, 4]` (if partial_overlaps=True)
* `[5, 5]` (if partial_overlaps=True)
| A B+2 dimensional potentially ragged boolean tensor with shape `[D1...DB, source_size, target_size]`. |
| `ValueError` | If the span tensors are incompatible. |